javascript - promise 与 setTimeout

标签 javascript asynchronous

我在以下代码中观察到了这一点:

setTimeout(function(){console.log('setTimeout')});
Promise.resolve(1).then(function(){console.log('promise resolve')})

无论我执行多少次,promise 回调总是在 setTimeout 之前记录。

我的理解是,两个回调都计划在下一个滴答声中执行,我真的不明白发生了什么,这使得 promise 总是优先于超时。

最佳答案

Promise.resolve 调度一个微任务,而 setTimeout 调度一个宏任务。并且在运行下一个宏任务之前执行微任务。

关于javascript - promise 与 setTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38752620/

相关文章:

JPA 实体仅在方法完成后更新

javascript - promise 执行错误nodejs javascript

javascript - Symfony 4 - 设置 Braintree 表单

javascript - $http.get 调用中包含什么 URL?

javascript - d3.js 更新饼图

c# - 如何使用 HttpListener 同时处理多个连接?

java - 一次收集几个 Future 的结果(即加入)

multithreading - 繁忙的游标-为什么?

javascript - 在 ajax 回调中更改 div 颜色

javascript - 重构以减少多个事件监听器之间的重复