Node.js - aguarde a conclusão de várias chamadas assíncronas antes de continuar no código
Então, basicamente, eu tenho um loop for com uma função assíncrona. O problema é que o programa apenas continua após o loop e quero que ele espere até que todas as funções assíncronas que foram chamadas no loop sejam concluídas antes que o código continue.
No meu código, "bar" é uma matriz json com outras matrizes json.
function write(bla) { // gets called one after another
for(var url in bla) {
asyncFunctionCall(url); // Executed about 50 times, it has to run parallel
}
// Wait for all called functions to finish before next stuff happens and
// write gets called again.
}
for(var foo in bar) {
// Here i parse the json array "foo" which is in the json array "bar"
write(foo[bla]); // bla is an array of multiple urls.
}
A chamada de função assíncrona é mais ou menos assim:
var request = require('request');
request(url, function (error, response, body) {
if(typeof response !== 'undefined') {
if((response.statusCode >= 400 && response.statusCode <= 451)
|| (response.statusCode >= 500 && response.statusCode <= 511))
return true;
return false;
}
return false;
});