例如,以下是基本节点http服务器(来自其官方网站),我们将回调传递给createServer()
。是否可以保证对foo()
和bar()
的调用将按特定顺序执行,并保持正常的控制流程?
我知道为了将消息排入由事件循环轮询的队列,我们必须传递一个带有foo()
和bar()
的回调函数。但如果我按照我刚才的方式调用函数,它是否能保证事件循环不会弄乱控制流。
注意:我实际上希望强制执行此控制流程(让我们将foo()
和bar()
视为最终会对传入进行错误检查的函数HTTP请求没有做任何特别是I / O密集的事情(我假设console.log
不是I / O密集型,纠正我,如果我错了)。)
var http = require('http');
http.createServer(function (req, res) {
foo();
bar();
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
function foo()
{
console.log('This is foo');
}
function bar()
{
console.log('This is bar');
}
答案 0 :(得分:3)
在您的示例中,foo()
和bar()
不会控制事件循环,因此它们始终按照您预期的顺序执行,并且在res...
命令之前执行。