现在用这样一段代码:
(() => { return new Promise((resolve) => {
setTimeout(() => { console.log('task1 -> 3s')
resolve()
}, 3000);
})
.then(() => {
setTimeout(() => { console.log('task2 -> 2s')
Promise.resolve()
}, 2000);
})
.then(() => {
setTimeout(() => { console.log('task3 -> 1s')
}, 1000);
})
})()
输出的顺序是 task1 -> task3 -> task2如果改成:
(() => {
return new Promise((resolve) => {
setTimeout(() => {
console.log('task1 -> 3s')
resolve()
}, 3000);
})
.then(() => {
return new Promise((resolve) => {
setTimeout(() => {
console.log('task2 -> 2s')
resolve()
}, 2000);
})
})
.then(() => {
setTimeout(() => {
console.log('task3 -> 1s')
}, 1000);
})
})()就可以了
而如果将第二个then 改成再返回一个promise就会没问题,请问这是为什么,我的想法是,第一种用Promise.then()不也是等待这个异步函数执行完再执行下面的内容吗?
请指教哪里理解的不对,谢谢了~
一只甜甜圈
慕桂英546537
随时随地看视频慕课网APP
相关分类