2016-08-02 23 views

Antwort

2

setTimeout stellt die übergebene Funktion in die Ereigniswarteschlange ein und der übergebene Code wird asynchron ausgeführt. https://webdev.dartlang.org/articles/performance/event-loop

Der Synchronisierungscode wird bis zum Ende ausgeführt und dann wird das nächste Ereignis in der Ereigniswarteschlange verarbeitet.

+0

Interessant. Ich habe auch bemerkt, dass dieses Verhalten nicht auftritt, wenn Sie Future.sync anstelle von setTimeout – Eternalcode

+1

'Future' s ein bisschen anderes Verhalten verwenden. Es gibt auch die Mikrotask-Warteschlange, die verarbeitet wird, bevor die nächste Aufgabe aus der Ereigniswarteschlange ausgeführt wird. 'Zukunft' hat eine noch höhere Priorität als AFAIR. –

+0

Re: 'Sync-Code wird bis zum Ende ausgeführt'. "Ende" bedeutet das Ende der aktuellen Funktion, oder "yield" wird aufgerufen (wenn in einer sync * - oder async * -Funktion), richtig? –