2013-08-23 3 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