2013-08-23 41 views
0

任務這似乎是工作:並行運行中的NodeJS

function callLoop (n) { 
    function caller() { 
    console.log("hello from " + n); 
    setTimeout(function() { 
     caller(); 
    }, 10000); 
    } 

    caller(); 
} 

for (var i = 0; i < 5; i++) { 
    callLoop(i); 
} 

setTimeout的,在這個例子中,反而會是一個長期運行的網絡電話。這是並行化這些網絡調用的「正確」方式嗎?

+0

[看看這個問題(http://stackoverflow.com/questions/4631774/coordinating-parallel-execution-in-node-js) – miah

回答

0

退房async.parallel

var async = require('async'); 

function callLoop (n) { 
    function caller() { 
    console.log("hello from " + n); 
    setTimeout(function() { 
     caller(); 
    }, 10000); 
    } 

    caller(); 
} 

var functions = []; 
for (var i = 0; i < 5; i++) { 
    functions.push(callLoop.bind(null, i)); 
} 

async.parallel(functions); 
+0

你有例子將終止,而我的例子不會(這是我想要的)。此外,我不是爲了一個例子而循環,我實際上想多次執行相同的代碼。最後,我不在乎「同步」它們(即等待它們完成)然後做一些事情。 – quinn

+0

就「同步」而言,最後一個「回調」是可選的。第一個參數是一個函數數組,您可以使用for循環來構造這些函數。 – fakewaffle

+0

我更新了代碼。讓我知道,如果這是你在想什麼。 – fakewaffle