我无法理解究竟是如何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
是排在后面,而不是在队列的末尾,后面的所有的在未来的要求。那是在它的工作方式? 也许我只是不理解在节点事件队列究竟是如何工作的。 请不要点我在这里 。 谢谢。