Więc ... Meteor.defer(function(){ // stuff })
nie jest w docs:Czy ktoś może wyjaśnić, w jaki sposób działa Meteor.defer()?
https://github.com/meteor/meteor/issues/2176
Ale this linki zdaje się mówić, że jest to po prostu odpowiednikiem
Meteor.setTimeout(function(){ // stuff }, 0);
Jeśli to przypadek, w jaki sposób to zrobić um, cokolwiek? Zasadniczo mówi "czekaj przez 0 ms, a następnie uruchom funkcję".
Tak ... natychmiast uruchamia funkcję.
Czego mi tu brakuje? Czy jest to coś w rodzaju: Tracker.afterFlush
czy coś takiego? Czy w jakiś sposób czeka na "rzeczy" (jakie rzeczy?) Zakończyć przed uruchomieniem?
Gotcha.Dziękuję za wyjaśnienie. Pomyślałem, że 'odroczenie' może być czymś, czego mogłem użyć, aby czekać na załadowanie elementów DOM przed zainicjowaniem kodu zewnętrznego, ponieważ ten post wspomina o tym - https://github.com/meteor/meteor/issues/2176 -:' Regularnie używam Meteor.defer(). Za każdym razem mam instrukcję w moim kodzie, która nie wydaje się wykonywać, a następnie uruchamiam tę samą instrukcję w konsoli i działa, pakuję ją w mój kod Meteor.defer() i to zwykle działa. Zazwyczaj wydaje się, że przypadki, w których coś w DOM, na którym jestem zależny, nie zostały jeszcze zrenderowane. ... ' – fuzzybabybunny
Nie rozumiem, w jaki sposób można go wykorzystać do wywołania efektu" renderowanego ". Jeśli użyjesz 'odroczenia', aby utworzyć kod' asynchroniczny', tj. 'Nieblokujący', kod zostanie po prostu natychmiast wykonany bez czekania na cokolwiek ... jest to dokładnie przeciwieństwo czekania na coś do zakończenia (jak renderowanie DOM). – fuzzybabybunny
To ma sens ... uruchamianie 'odroczenia' usuwa go z bieżącej kolejki wykonania, a ponieważ js jest pojedynczym wątkiem, po prostu uruchamia się, gdy kończy się cokolwiek w kolejce wykonania - tak więc działa jak część opóźnienie (w twoim pierwszym komentarzu), ale nie jest natychmiast wykonywane (ponieważ pojedynczy wątek) w twoim drugim komentarzu. –