【发布时间】:2017-09-05 06:39:17
【问题描述】:
尽管是单线程的,但我正在研究 javascript 的异步行为,我在评论指出此代码:
request(..., function (error, response, body)
console.log('foo);
});
callAComputationallyIntensiveSynchronousFunctionThatTakesSixHoursToExecute();
console.log('bar');
'bar' 仍然会出现在 'foo' 之前,因为 Javascript 总是首先完成当前正在执行的函数。事件永远不会中断函数。
我知道同步函数执行的优先级高于事件,但我不明白为什么 'bar' 会在 'foo' 之前打印。根据我的阅读,应该进行异步调用,然后在响应准备好之前填充死时间,它会继续处理其他代码行直到准备好,然后它应该执行响应的回调函数然后返回处理代码等等。
然而,上面的例子表明,即使响应在同步函数完成执行之前很久就准备好了,它仍然会继续执行下一行代码。这是为什么呢?
【问题讨论】:
标签: javascript asynchronous process