【发布时间】:2015-07-21 18:15:16
【问题描述】:
我正在尝试在 nodeJS 中进行回调。在遇到以下示例之前,我以为我已经把它们记下来了:
function async(callback) {
for(var i = 0; i < 10; i++) {
}
callback();
}
async(function() {
console.log('Expected 2nd Printout');
});
console.log('Expected 1st Printout');
我对节点和回调的理解是,在调用异步函数后,将在等待异步函数完成执行时打印“预期的第 1 次打印输出”,然后在何时打印“预期的第 2 次打印输出”它已经完成了。然而,在执行这个简单的程序时,情况正好相反。
我在想,因为这是一个处理任务,而不是异步函数正在等待文件或侦听某些网络响应的情况,所以程序是以过程方式而不是异步方式运行的?
【问题讨论】:
-
为什么你认为这是异步的?您只是传递函数并立即执行它。怎么会是异步的?
-
我不知道 node.js 是否是这种情况,但 Javascript 本质上是单线程的。您调用函数
async()的事实不会导致它在另一个线程中运行。此外,您的空for循环几乎肯定会被 JITter 优化掉。
标签: javascript node.js asynchronous io callback