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