現在用這樣一段代碼:(() => { 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()不也是等待這個異步函數執行完再執行下面的內容嗎?請指教哪里理解的不對,謝謝了~
關于串行promise的一個問題
慕森卡
2019-03-11 20:04:32