nodejs padrão de design de retorno de chamada paralelo
Estou tentando encontrar um bom padrão para executar várias tarefas paralela
Deixe-me definir algumas tarefas para exemplificar. Tarefasa, b, c, d, e, f, g
executar comoa(function(er, ra){//task a returned, ra is result})
, então fazb
parag
Também existem algumas tarefas que devem ser executadas após a conclusão de uma tarefa, vamos chamá-lasab, bc, abc, bd, bcd, af, fg
, significa quandoa
eb
Voltouab(ra, rb)
deve ser executado de uma vez e quandob
ec
devolvida,bc(rb, rc)
deve ser executado de uma vez e sea
, b
, c
todos retornaram,abc(ra, rb, rc)
deve ser executado.
Para o caso mais simples, se houver apenasa
eb
, Eu posso fazer algo assim:
(function(cb){
var count = 2, _ra, _rb;
function update(){if(--count == 0) cb(null, _ra, _rb)}
a(function(er, ra){_ra = ra; update()});
b(function(er, ra){_rb = rb; update()});
})(function(er, ra, rb){
ab(ra, rb);
});
Como você pode ver,a
eb
executar em paralelo e, quando ambos estiverem concluídos,ab(ra, rb)
execute.
Mas como posso fazer mais coisas para muitas tarefas paralelas?