JavaScript setTimeout的执行顺序

Shaibal S

我试图了解setTimeout的执行方式。

在下面的示例中,我期望在控制台日志中看到“ Inside setTimeout”作为第二行。

但是,我总是在控制台日志的第三行看到“ Inside setTimeout”。

这是我在日志中始终看到的内容:

First
Last
Inside setTimeout

知道为什么会这样吗?

<script>
console.log('First');
// NOTE: 0 milliseconds.
setTimeout(function() {console.log('Inside setTimeout')}, 0);
console.log('Last');
</script>
TJ人群

即使超时为0毫秒,它仍将函数调度为异步调用。setTimeout工作方式是:

  • 对输入进行一些验证
  • 从X时间起将函数添加到要调用的列表中
  • 返回

稍后,经过指定的时间后,浏览器将使一个任务排队以调用该函数,当处理该函数前面的任务时,事件循环将对其进行处理。

永远不会立即调用该函数。那会很混乱;通过始终异步调用它,它是一致的。(这也是为什么即使已经解决了Promise总是总是异步调用Promisethencatch处理程序的原因。)

所有这些细节都在规范中

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章