Rolf B: Wie Microtasks / Macrotasks dressieren?

Beitrag lesen

Hallo Christian,

die Queues kommen nur dann ins Spiel, wenn Du auch was reinstellst. Normale Funktionsaufrufe werden da ausgeführt, wo sie im Code stehen.

Wenn Du einen HAUFEN Ereignisquellen hast, die alle kreuz und quer mit Promises und setTimeout Einträge in Mikro- und Makrotaskqueue machen, dann wird es natürlich schwierig.

Die Frage ist ja, was Du eigentlich tust. Wenn man seinen Code halbwegs beieinander hat, dann bearbeitet ein Codeteil auch nur ein Stück der Daten, und andere Codeteile andere Daten. Was diese beiden Teile tun, ist unabhängig voneinander und braucht keine definierte Verarbeitungsreihenfolge. Wenn Du mehrere asynchrone Stränge hast, und irgendwann an einen Punkt kommst, wo beide Stränge fertig sein müssen, dann brauchst Du Synchronisierungsobjekte. Das kann z.B. ein durch Promise.all() erzeugtes Sammelpromise sein. Da läuft der then-Handler los, wenn alle an der Erzeugung beteiligten Promises resolved sind.

Was ich sagen will: synchronisiere nur, was Du auch synchronisieren musst. Du musst es dann, wenn Datenabhängigkeiten bestehen. Und die sollten sich durch Callbacks oder Promises abbilden lassen.

Rolf

--
sumpsi - posui - obstruxi