это еще один хороший выбор.
аюсь найти хороший шаблон для выполнения нескольких параллельных задач.
Позвольте мне определить некоторые задачи для примера. Задачиa, b, c, d, e, f, g
выполнить какa(function(er, ra){//task a returned, ra is result})
, Ну действуйb
вg
Есть также некоторые задачи, которые должны быть выполнены после выполнения какой-либо задачи, давайте их назовемab, bc, abc, bd, bcd, af, fg
, значит когдаa
а такжеb
вернулсяab(ra, rb)
должны быть выполнены сразу, а когдаb
а такжеc
вернулся,bc(rb, rc)
должны быть выполнены сразу, и еслиa
, b
, c
все вернулось,abc(ra, rb, rc)
должно быть выполнено.
Для простейшего случая, если есть толькоa
а такжеb
Я могу сделать что-то вроде этого:
(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);
});
Как вы видете,a
а такжеb
выполнить параллельно, и когда оба будут выполнены,ab(ra, rb)
выполнить.
Но как я могу сделать больше вещей для множества параллельных задач?