今天在公众号上看到一段代码,刚看到的时候遇到了一些问题,下面来看一下。
setTimeout(function() {
console.log(1);
})
new Promise(function(resolve, reject) {
console.log(2);
resolve(3)
}).then((res) => {
console.log(res)
})
console.log(4);
先上正确答案
2
4
3
1
分析原因
- 首先setTimeout会在下一轮时间循环执行,所以不会当时就打印。
- Promise对象在实例的时候其实就已经执行了内部的代码,所以2首先打印了。
- Promise.then() 在本轮事件循环结束之后执行,所以3会在4之后打印。
- 本轮事件循环结束,开始下一循环打印setTimeout中的1