JavaScript事件循环是否在地图迭代之间产生控制?

时间:2017-02-14 17:57:29

标签: javascript

这是一个基本问题,但是当我学习JavaScript时,我仍然对运行时的一些细微差别感到朦胧。具体来说,我很好奇事件循环如何处理像Array.prototype.map这样的事情?在不知道精确实现的情况下,我想知道代码是否可以在迭代之间执行?

1 个答案:

答案 0 :(得分:4)

不。 map是一个同步操作。

setTimeout(function() {
  console.log('run as soon as possible');
}, 0);

[1, 2, 3, 4, 5].map(function(x) {
  console.log(x);
});

事件循环基本上如下所示:

  1. 运行同步代码
  2. 根据需要将项目添加到事件队列
  3. 完成运行同步代码
  4. 检查事件队列中是否有任何应该立即运行的代码
  5. 如果异步代码已准备好运行,请将其作为同步代码启动并返回1
  6. 如果没有准备好运行代码,请返回4.