有没有办法在node.js中强制执行同步函数调用?

时间:2014-06-03 04:11:26

标签: javascript node.js asynchronous control-flow event-loop

例如,以下是基本节点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');
}

1 个答案:

答案 0 :(得分:3)

在您的示例中,foo()bar()不会控制事件循环,因此它们始终按照您预期的顺序执行,并且在res...命令之前执行。