Я новичок node.js, и я пытаюсь понять, как я могу организовать некоторую логику неблокируемым способом. node нравится.
У меня есть набор сред ['stage', 'prod'] и другой набор параметров, называемых брендами ['A', 'B', 'C'] и набором устройств ['phone', ' таблетки '].
В node мире с обратным вызовом у меня есть это:
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?
});
}
Я пытаюсь создать отчет с блоками для каждой среды:
A:
Stage -- report
Prod -- report
B: ...
Моя проблема в том, что, поскольку все здесь так асинхронно, особенно внутри getTape, которое вызывает node http.request. Как я могу сериализовать все в конце всего этого асинхронного удивления, чтобы я мог создать отчет в том порядке, в котором я хочу?
Я слышал что-то о javascript Promises. Будет ли это помогать, т.е. Каким-то образом собрать все эти Promises, а затем дождаться их завершения, затем получить собранные данные?