2010-12-13 7 views
4

Node.js에 비동기 모듈 (https://github.com/caolan/async 참조)을 사용하고 있습니다. 내 질문은 ... 폭포가 너무 느린 이유는 무엇입니까? 회신폭포가 너무 느린 이유는 무엇입니까?

그것은이 코드 조각을 실행에 대한 사초를 걸립니다 ...

App.post("/form", function(request, response) { 

Async.waterfall([ 

    function(callback) { 

    console.log("1."); 
    callback(null, "some data"); 

    }, 

    function(data, callback) { 

    console.log("2.");    
    callback(null, "some data"); 

    }, 

    function(data, callback) { 

    console.log("3."); 
    callback(null, "some data");    

    } 

], function(error, document) { 

    console.log("4.");    
    console.log("Done."); 

    response.send(); // Takes 4 seconds 

}); 

} 

출력

1. 
2. 
// After 4 seconds 
3. 
4. 
Done. 

감사합니다!

+1

응답이란 무엇입니까? 또한 실제 코드입니까? 이것은 바로 여기에서 실행되기 때문입니다. –

+0

Node.js v0.3.2-pre를 사용하고 있습니까, 어떤 버전을 사용합니까? –

+0

나는 3.2 프리 (5a87bd168d8fbeca7d48b9ddaa3b4e8a9336719c)에 있지만 여전히 실제 코드는 어떻게 보이나요? –

답변

3

다른 Node.js 버그입니다.

process.nextTick을 다른 process.nextTick 내에서 보류 중일 때 http.ServerResponse이 깨졌습니다.

var http = require('http'); 
http.createServer(function(req, res) { 
    var now = new Date(); 
    process.nextTick(function() { 
     process.nextTick(function() { 
      console.log(new Date() - now); 
      res.writeHead({}); 
      res.end('foooooo'); 
     }); 
    }); 
}).listen(3000); 

이 후 상기 버그가 트리거되고 그 결과 process.nextTick 통해 호출 된 다른 콜백 내부로부터 콜백을 호출 async.js 영원 취.

빠른 수정 :async.nextTick modifiy 라인 63async.js에서 단지 setTimeout를 사용합니다.

버그 : 나는 이것에 issue을 제출했습니다.

+0

고맙습니다, 이보! –

관련 문제