Promise Javascript node.js?

Jestem nowicjuszem node.js i staram się zrozumieć, w jaki sposób mogę zorganizować logikę w węźle, który nie lubi blokowania.

Mam zestaw środowisk ['stage', 'prod'] i inny zestaw parametrów zwanych brandami ['A', 'B', 'C'] i zestaw urządzeń ['phone', 'tablet'] .

W świecie węzłów sterowanych wywołaniem zwrotnym mam to:

brands.forEach( function(brand) {
    devices.forEach( function(device) {
        var tapeS = getTape('stage',brand,device); // bad example...tapeS never set
        var tapeP = getTape('prod' ,brand,device);
    })
} )
// more stuff here
function getTape(env,brand,device) {
   var req = http.request(someOptions,function(resp) {
       // ok, so we handle the response here, but how do I sequence this with all the other
       // responses, also happening asynchronously?
   });
}

Próbuję zbudować raport z blokami dla każdego środowiska:

A:
    Stage -- report
    Prod  -- report 
B:    ...

Moim problemem jest to, że ponieważ wszystko tutaj jest tak asynchroniczne, zwłaszcza wewnątrz getTape, który wywołuje http.request węzła. Jak mogę serializować wszystko na końcu całego tego asynchronicznego cudu, abym mógł utworzyć raport w kolejności, w jakiej chcę?

Słyszałem coś o javascript Promises. Czy ta pomoc, tj. Jakiś sposób na zebranie wszystkich tych obietnic, poczeka, aż wszystkie się wypełnią, a następnie zdobędzie zebrane dane?

questionAnswers(5)

yourAnswerToTheQuestion