e003-执行打印003
console.log('start')
setTimeout(()=> {
console.log(1)
Promise.resolve().then(() => {
console.log(2)
})
},0)
new Promise(function(resolve,reject) {
console.log(3)
setTimeout(() => {
console.log(4)
resolve(5)
},0)
}).then((res) => {
console.log(7)
setTimeout(() => {
console.log(res)
},0)
})
答案:
start
3
1
2
4
7
5
重点解析
打印完1之后打印2,一个seTimeout 算是一个宏任务,执行第一个setTimeout 时候会打印里面的同步代码1,执行完了后,在执行下一个宏任务setTimeout之后会执行,微任务 Promise.resolve().then(() => { console.log(2) })所以会打印2
console.log('start')
setTimeout(()=> {
console.log(1)
Promise.resolve().then(() => {
console.log(2)
})
setTimeout(()=> {
console.log(8)
},0)
},0)
new Promise(function(resolve,reject) {
console.log(3)
setTimeout(() => {
console.log(4)
resolve(5)
},0)
}).then((res) => {
console.log(7)
setTimeout(() => {
console.log(res)
},0)
})
答案:
start
3
1
2
4
7
8
5