2012-05-24 4 views
3

어떻게 내 서버가 for 루프를 수행하지 못하고 다른 요청을 처리 할 수 ​​있도록합니까? 내 서버가 다른 작업을 수행하는 동안 for 루프를 병렬로 수행하면 좋을 것입니다.node.js에서 병렬 작업을 할당하는 방법

socket.on('drawing', function() { 
     for (var i = 0; i < x.length-1; i++) 
     { 
     //do stuff 
     } 
    }); 

답변

1

@ Slace의 답변에 따라 비동기식 재귀를 사용할 수 있습니다.

socket.on('drawing', function { 
    var i = 0; 
    (function someFunction() { 
    if (i < x.length - 1) { 
     i++; 

     // Do stuff. 

     process.nextTick(someFunction) 
    } else { 
     // Do something else. 
    } 
    }()); 
}); 
2

당신은 멀리 기능을 이동 process.nextTick를 사용할 수 있지만 진정한 병렬 습관은 Node.js를 그것이 정말 스레드를하지 않도록 이벤트 중심의 언어이다. Here's의 사용 개요는 process.nextTick입니다.

4

Async.js에는 foreachwhilst과 같은 도우미 기능이있어 여기에서 요구하는 것과 정확히 일치합니다.

편집 :

다음은 전체 예제 :

async = require('async'); 

var i = 0 

async.whilst(
    // test 
    function() { return i < 5; }, 
    // loop 
    function(callback) { 
     i++; 
     console.log('doing stuff.'); 
     process.nextTick(callback); 
    }, 
    // done 
    function (err) { 
     console.log('done!'); 
    } 
); 

출력 :

doing stuff. 
doing stuff. 
doing stuff. 
doing stuff. 
done! 

편집 2 : 혼란 사람을 피하기 위해 의견에 이름 지정된 함수 변경되었습니다.

관련 문제