Baue mein erstes "seriöses" Node.js-Projekt (mit Express).
Ich muss mehrere Aufrufe an mehrere REST-APIs verwenden, alle Ergebnisse sammeln, sie massieren und einen vollständigen JSON an den Client zurückgeben (HTML5 + AJAX).
Ich bin sicher / hoffe, dass es ein einfaches Muster, eine Lösung oder ein Modul gibt, für das ich einfach nicht richtig googlen konnte :) Ich würde auch eine Meinung darüber, wo solche Operationen (unter "Routen"? Separate Dateien? Etc.)
Danke für Ihre Zeit!
Das asynchrone Modul passt in diese Art von Arbeit. Insbesondere können Sie die Funktion asyncwasserfall verwenden.
Beispiel:
%Vor%Bearbeiten, wenn Sie einige nichttriviale Abhängigkeiten zwischen den Jobs haben, dann können Sie async.auto verwenden. Es bestimmt die beste Reihenfolge für das Ausführen von Funktionen basierend auf ihren Anforderungen.
Es gibt viele Kontrollflussbibliotheken in der Umgebung. Ich habe Q in meinen vorherigen Projekten verwendet, über die ich keine Beschwerden habe, aber wahrscheinlich werde ich die async-Bibliothek von coolan für mein nächstes Projekt verwenden.
Was Sie oben beschrieben haben, möchten Sie wahrscheinlich mit der Parallelfunktion sehen
Das von Ihnen beschriebene Problem kann ziemlich einfach auf das parallele Beispiel in der Dokumentation übertragen werden.
EDIT: Ich habe das bisschen über abhängige API-Aufrufe verpasst. Wann immer Sie Werte entlang der Kette übergeben und die Reihenfolge steuern müssen, müssen Sie die Wasserfallmethode verwenden (siehe qiaos Antwort). Wenn es einen Fall gibt, in dem die Aufrufe unabhängig sind, würden Sie die parallele Methode verwenden. Ein Beispiel für die parallele Methode finden Sie unter
%Vor%Was dies tut, macht alle Ihre Anfragen parallel und gibt Ihnen einen Rückruf, wenn sie alle erledigt sind. Hier würden Sie Ihre Daten massieren.
Liste der Kontrollfluss-Bibliotheken:
Tags und Links node.js asynchronous express