【发布时间】:2013-04-19 16:47:09
【问题描述】:
我无法准确理解 process.nextTick 的工作方式。我以为我理解了,但我似乎无法复制我认为这应该如何工作:
var handler = function(req, res) {
res.writeHead(200, {'Content-type' : 'text/html'});
foo(function() {
console.log("bar");
});
console.log("received");
res.end("Hello, world!");
}
function foo(callback) {
var i = 0;
while(i<1000000000) i++;
process.nextTick(callback);
}
require('http').createServer(handler).listen(3000);
当foo 循环时,我将发送多个请求,假设handler 将在foo 后面多次排队,而callback 仅在foo 完成时才排队。
如果我对它的工作原理是正确的,我假设结果将如下所示:
received
received
received
received
bar
bar
bar
bar
但它没有,它只是顺序的:
received
bar
received
bar
received
bar
received
bar
我看到foo 在执行callback 之前返回,这是预期的,但似乎callback 是NEXT,而不是在队列的末尾,在所有进来的请求之后。是它是这样工作的吗?也许我只是不明白节点中的事件队列是如何工作的。请不要指向我here。谢谢。
【问题讨论】:
标签: javascript node.js callback eventqueue