Dies ist mein erster Schuss auf verschachtelte Versprechen. Ich benutze die bluebird Bibliothek, aber ich denke, die Idee ist die gleiche für alle Versprechen Bibliotheken.Lösen einer Reihe von Versprechen aus einem Elternversprechen
Auf einem hohen Niveau, ist es das, was ich versuche zu tun:
myService.getSomeData(url)
.then((data) => {
myOtherService.getMoreData(data.uniqueId)
.then((thisDataIsAnArray) => {
//loop over the data above and do something
});
});
getMoreData()
soll X Service-Anrufe und die Ergebnisse in einem Array X Elemente lang. Hier fange ich an, mich zu verirren, da ich mir nicht sicher bin, wie ich diese Methode herstellen soll und was ich davon zurückkriege. Ich habe ein paar Stiche bei Bluebirds Promise.all
und Promise.map
genommen, aber ich zappele und dachte, ich würde Vorschläge erbitten.
Versuchen, Ihr Ziel zu verstehen. Also, Sie wollen eine Reihe von Versprechen ausführen, dann eine weitere Reihe von Versprechen angesichts der Beschlüsse aus der ersten Reihe von Versprechen, dann führen Sie eine dritte Reihe von Logik auf der Grundlage der Beschlüsse aus der zweiten Reihe von Versprechen? Eines der Ziele von Versprechen ist es, "Callback-Hölle" zu entfernen. Folglich könnte es für Sie angenehm sein, Versprechen zu verketten, anstatt sie zu verschachteln. – jpodwys
Sie könnten mit [flattening Ihre Kette] beginnen (http://stackoverflow.com/a/22000931/1048572). – Bergi
Jede asynchrone Methode sollte ein Versprechen * für das Ergebnis der asynchronen Aktionen in ihr zurückgeben. Jeder einzelne. – Bergi