现在用这样一段代码:
(() => { 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()不也是等待这个异步函数执行完再执行下面的内容吗?
请指教哪里理解的不对,谢谢了~
千巷猫影
相关分类