Estoy tratando de encontrar un buen patrón para ejecutar un conjunto de tareas paralelas.nodejs patrón de diseño de devolución de llamada paralelo
Déjenme definir algunas tareas para ejemplificar. Tareas a, b, c, d, e, f, g
ejecutan como a(function(er, ra){//task a returned, ra is result})
, también lo hacen b
a g
También hay algunas tareas que deben ejecutar después de una cierta tarea se realiza, llamémosles ab, bc, abc, bd, bcd, af, fg
, significa que cuando a
y b
ha vuelto ab(ra, rb)
deberían ser ejecutados a la vez, y cuando b
y c
se devolvieron, bc(rb, rc)
se deben ejecutar a la vez, y si a
, b
, c
todos devueltos, abc(ra, rb, rc)
deben ejecutarse.
Para el caso más simple, si sólo hay a
y b
, yo puedo hacer algo como esto:
(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 se puede ver, a
y b
ejecutar en paralelo, y cuando los dos lo hacen, ab(ra, rb)
ejecutar.
Pero, ¿cómo puedo hacer más cosas para muchas tareas paralelas?
Eso debería ser un cumplido.Explicar cómo usar el paso es una respuesta. – Raynos
@Raynos me llevó un par de veces leer eso para darme cuenta creo que querías decir 'comentario', pero no lo cambies porque es bastante gracioso – BigOmega