我正在使用异步模块(请参阅https://github.com/caolan/async)获取Node.js,我的问题是...... 为什么瀑布这么慢?
执行这段代码需要 4秒 ...
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.
感谢您的回复!
答案 0 :(得分:3)
这只是另一个Node.js Bug。
在待处理的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);
这需要一个永恒,async.js
从其他回调中调用回调,这些回调通过process.nextTick
调用,然后导致上述错误被触发。
快速修复:async.js
行63
修改async.nextTick
,仅使用setTimeout
。
错误:我已就此提交了issue。