我試圖找到一個很好的模式來執行一堆並行任務。nodejs並行回調設計模式
讓我定義一些任務來舉例說明。任務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)
執行。
但是我怎麼能爲很多並行任務做更多的事情呢?
這應該是一種恭維。解釋如何使用步驟是一個答案。 – Raynos 2011-05-13 15:54:42
@Raynos @Raynos花了我幾次閱讀,意識到我認爲你的意思是'評論',但不要改變它,因爲這很有趣 – BigOmega 2013-01-29 02:30:48