Javascript Promesa node.js?

Soy un novato de node.js y estoy tratando de entender cómo puedo organizar algo de lógica de la manera no bloqueante en que le gusta a nodo.

Tengo un conjunto de entornos ['stage', 'prod'] y otro conjunto de parámetros llamados marcas ['A', 'B', 'C'] y un conjunto de dispositivos ['phone', 'tablet'] .

En el mundo de devolución de llamada de nodo tengo esto:

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?
   });
}

Estoy tratando de construir un informe con bloques para cada entorno:

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

Mi problema es que, como todo aquí es tan asíncrono, especialmente dentro de getTape, que llama a http.request del nodo. ¿Cómo puedo serializar todo al final de todas estas preguntas asíncronas para poder crear el informe en el orden que deseo?

Escuché algo sobre las promesas de javascript. ¿Ayudaría eso, es decir, alguna forma de recopilar todas estas Promesas y luego esperar a que todas se completen, y luego obtener los datos que recopilaron?

Respuestas a la pregunta(5)

Su respuesta a la pregunta