setTimeout(function(){
console.log(1)
}, 0);
new Promise(function excutor(resolve) {
console.log(2);
resolve()
console.log(3)
}).then(function(){
console.log(4)
})
console.log(5)
- 输出23541
setTimeout(function(){
console.log(1)
}, 0);
new Promise(function excutor(resolve) {
console.log(2);
for(var i = 0; i < 10000; i++) {
i == 999 && resolve();
}
console.log(3)
}).then(function(){
console.log(4)
})
console.log(5)
- 输出23541
setTimeout(function(){
console.log(1)
}, 0);
new Promise(function excutor(resolve) {
console.log(2);
setTimeout(function(){
resolve()
}, 0);
console.log(3)
}).then(function(){
console.log(4)
})
console.log(5)
- 输出23514
- 总结:then的回调函数会在当前脚本同步任务执行完后执行,但setTimeout会将回调函数添加到任务的末尾,即resolve延迟到同步的末尾
Paste_Image.png