2015-05-06 26 views
7

Jaki jest cel metody async w polimerze? Kiedy powinienem go użyć?Polimer: kiedy używać async?

Teraz używam go jak hm-ten-bug-jest-dziwny-może-asynchronicznie-naprawia-to-yep-id-did-yey. Nie daje mi ona żadnego zaufania do mojego kodu, ponieważ zraszam async właśnie wtedy, gdy pojawia się jakiś błąd czasu.

Odpowiedz

8

Odpowiedź jest nieco inna w zależności od tego, czy używasz polimeru 0,5, czy 1.0. W wersji 1.0 więcej operacji jest synchronicznych, więc możesz nie widzieć tak dużej potrzeby asynchronizacji (także async method works slightly differently in 1.0).

Zacznijmy od 0,5. Większość przypadków dotyczy skutków zmiany właściwości. Właściwości używane w powiązaniach danych lub obserwatorach są obserwowane w przypadku zmian. Gdy zmienisz jedną z tych właściwości, wszelkie efekty uboczne tej zmiany mają miejsce asynchronicznie, z synchronizacją mikropasków. Oznacza to, że praca jest wykonywana po powrocie bieżącego programu obsługi zdarzeń, ale przetwarzane jest następne zdarzenie przed .

Innymi słowy, jeśli mam wiążącą tak dane:

<div id="output">{{someProperty}}</div> 

Załóżmy, że mam następujący kod:

this.someProperty = "New Value"; 
console.log(this.$.output.textContent); // logs "Old Value" 

To gdzie asynchrony gryzie cię. Jeśli chcesz, aby powiązane dane były aktualizowane, musisz dać systemowi powiązań danych szansę na działanie. Jeśli przeniesiesz że console.log oświadczenia do w async, więc jest to realizowane w późniejszym czasie, można uzyskać odpowiedź można oczekiwać:

this.async(function() { 
    console.log(this.$.output.textContent); // logs "New Value" 
}); 

Większość czasu, nie trzeba grzebać w danych związanych elementów DOM. Ale w przypadku, gdy to robisz lub, że czekasz na efekt uboczny obserwatora, prawdopodobnie chcesz asynchronizacji.

W Polymer 1.0, powiązanie danych i obserwacje pojedynczych właściwości są synchroniczne. Obserwatorzy wielu własności i some DOM operations są asynchroniczni.

(Choć różnią się od API JavaScriptu, ten artykuł Dart o pętli zdarzeń jest najlepszy znalazłem opisać zdarzenie pętli i microtask kolejki: https://www.dartlang.org/articles/event-loop/)

+2

Wielką odnośnik dart! Kolejka Mircrotask była dla mnie zagadką - to wszystko wyjaśni. – user1463822

Powiązane problemy