Promise.resolve(1).then(() => {
console.log('then1')
Promise.resolve(2).then(() => {
console.log('then3')
Promise.resolve(3).then(()=> {
console.log('then4')
Promise.resolve(4).then(() => {
console.log('then5')
Promise.resolve(5).then(()=> {
console.log('then6')
})
})
}).then(() => {
console.log('then7')
})
}).then(() => {
console.log('then8')
})
}).then(() => {
console.log('then2')
}).then(() => {
console.log('then9')
}).then(() => {
console.log('then10')
})
复制代码
Ready GO
Promise.resolve()相当与new Promise((resolve,reject)=>{resolve()})
第一轮
- current task: resolve(1)是当之无愧的立即执行的一个函数
- micro task queue: [resolve(1)的第一个then]
第二轮
- current task: then1执行中,立即输出了then1以及新resolve(2)的promise
- micro task queue: [新resolve(2)的then函数,以resolve(1)的第二个then函数]
第三轮
- current task: 新resolve(2)的then函数输出then3,新resolve(3)的promise和resolve(1)的第二个then函数输出then2。
- micro task queue: [新resolve(3)的then函数, resolve(2)的第二then函数, resolve(1)的第三个then函数]
第四轮
- current task: resolve(3)的then函数输出then4,新resolve(4)的promise,resolve(2)的第二then函数输出then8和resolve(1)的第三个then函数输出then9
- micro task queue: [新resolve(4)的then函数,resolve(3)的第二个then函数, resolve(1)的第三个then函数]
第五轮
- current task: resolve(4)的then函数输出then5,新resolve(5)的promise,resolve(3)的第二then函数输出then7和resolve(1)的第三个then函数输出then10
- micro task queue: [新resolve(5)的then函数]
第六轮
- current task: resolve(5)的then函数输出then6
- micro task queue: []