Umsetzen des blockierenden Kontrollflusses in NodeJS

Ich versuche, einen blockierenden Kontrollfluss zu erstellen, bin jedoch in eine Sackgasse geraten. Die Idee ist, dass eine Anforderung eingeht und eine Reihe von Handlerfunktionen durchläuft. Jede Funktion tut etwas und entscheidet, ob die Anforderung nun erfüllt ist oder nicht. Wenn dies der Fall ist, stoppt die Verarbeitung. Wenn dies nicht der Fall ist, wird der nächste Handler aufgerufen. Jeder Handler kann etwas asynchron ausführen (z. B. Daten abrufen / schreiben). In diesem Fall sind die folgenden Handler davon abhängig, dass die Daten vorhanden sind, bevor sie gestartet werden.

isher habe ich zwei Ideen, die diesen Anforderungen nicht ganz entsprechen: 1) Alle Handler sind Funktionen, die in ein Array verschoben und mit @ durchlaufen werdesome. Wenn ein Handler den Kontrollfluss stoppen möchte, muss er einfach @ zurückgebetrue. Bei diesem Ansatz kann keiner der Handler asynchrone Funktionen aufrufen.

2) Alle Handler sind angekettete Versprechen. Dies scheint mir eine bessere Idee zu sein, aber ich kann nicht herausfinden, wie ich den Steuerungsfluss am besten stoppen kann. Ich habe zwei Ideen: - Behalte eine Variable, die auf @ gesetzt itrue sobald ein Handler beschließt, den Fluss zu unterbrechen. Überprüfen Sie diesen Wert in jedem einzelnen Handler und beheben Sie ihn bei Bedarf sofort. Dies bedeutet viel doppelten Code. - Ein Versprechen ablehnen, wenn es den normalen Ablauf nicht fortsetzen möchte, und mit @ fortfahrcatch. Der Gedanke, Fehler als Mittel zur Steuerung des Flusses zu verwenden, schmerzt mich jedoch - und es bedeutet auch, dass ich den Fall behandeln muss, in dem der catch aufgrund eines tatsächlichen Fehlers aufgerufen wird.

Meine wahnsinnigen Sinne sagen mir, dass es einen anderen Weg geben muss, aber ich kann es nicht herausfinden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage