Se você está programando no Node, e se você é um iniciante ou não quer usar nenhum módulo, você definitivamente enfrentará um problema como;
“Tenho tarefas a serem realizadas dentro de um loop que leva mais tempo do que a própria iteração”
Minha resposta; Claro! Digamos que você esteja usando o Redis e até mesmo com um procedimento simples como ir ao Redis e buscar alguns valores múltiplos e, posteriormente, processá-los de acordo com uma lógica vai demorar muito mais do que a simples iteração. Estamos comparando pessoas “getListOfAllUsers” a “i ++”.
Portanto, aqui está um truque que eu sugeriria. Contadores de loop! Aqui está algo que pode causar um problema;
for(var i=0;i<someList.length;i++) {
fetchInformation(someList[i]);
}
console.log("Success");
Resultado? Claro, FALHA. No entanto, aqui está como mudar as coisas;
- Insira um parâmetro de retorno de chamada que terá uma função que será disparada assim que a operação for concluída.
- Insira um loopCounter que decidirá quando terminar seu loop.
Portanto, o novo código seria;
var loopCounter = 0;
for(var i=0;i<someList.length;i++) {
fetchInformation(someList[i], function(data) {
loopCounter++;
});
if(loopCounter == someList.length) //Think it like loop.on("finished") event
console.log("Success");
}
Espero que goste ou me mostre uma maneira melhor de implementar isso. Mas é assim que eu uso e espero que ajude algumas pessoas que estão lutando com a estrutura assíncrona do Node.