Ich könnte Dinge in der asynchronen Hölle vermasseln, in der ich mich gerade befinde, und nach dem Debuggen für einen halben Tag gerne jede Hilfe nehmen.Wie bekomme ich den letzten Prozess von async forEach?
Die Aufgabe besteht darin, eine Reihe von Entitäten in der Datenbank asynchron zu aktualisieren. Es ist:
- Ruft eine Liste von Entitäten vom Typ Foo
- für jedes dieser Elemente aktualisieren es in der Datenbank
- SELECT Einheiten vom Typ Bar mit entsprechenden Bedingungen und aktualisieren sie entsprechend
- Schließlich Updates ein Array von Objekten der Form
[{entity: 'Foo || Bar', id: foo.id || bar.id}]
Was ich zur Zeit haben, ist die folgende (mit Drossel Promise.map):
Dies funktioniert natürlich nicht, da der letzte .then-Block aufgerufen wird, bevor die anderen fertig sind.
Aber ich kann nicht herausfinden, wo und wie kann ich springen, um die Antwort auf den Client genau nach jedes Update wurde abgeschlossen? Der Index, den ich in Promise.map(arrayOfFoos, function(foo, index)
bekomme, ist während der Verarbeitung völlig durcheinander, so dass ich mich nicht darauf verlassen kann, die Antwort zu senden, wenn index gleich arrayOfFoos.length ist.
Und da es sehr viele Entitäten geben könnte, die in diesem Prozess aktualisiert werden, möchte ich dies nicht synchron so weit wie ich vermeiden kann, um das Backend während des Prozesses nicht zu blockieren.
Vielen Dank im Voraus!
Mit freundlichen Grüßen,
Vegaaaa
Sie müssen 'das Versprechen von der Callback-Funktion return' so dass' map' warten kann es – Bergi