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?

questionAnswers(6)

yourAnswerToTheQuestion