promise的then的链式调用顺序不是按照先后顺序的吗?为什么以下代码的顺序有点不一样?newPromise((resolve,reject)=>{console.log("promise1")resolve()}).then(()=>{console.log("then1-1")newPromise((resolve,reject)=>{console.log("promise2")resolve()}).then(()=>{console.log("then2-1")}).then(()=>{console.log("then2-2")})}).then(()=>{console.log("then1-2")})/*运行结果:promise1then1-1promise2then2-1then1-2then2-2*/同样的,我的问题也就是:第一个外层的then的状态是什么情况下,第二个外层的then才会调用呢?
2 回答
慕神8447489
TA贡献1780条经验 获得超1个赞
第1行的Promise被创建,它的构造函数里面的函数会立即执行,此时输出promise1第2行的resolve方法被调用,因此会接着执行第4行的then里面的内容,此时输出then1-1;第14行的then里面的内容会进入任务队列,等待执行。第6行的Promise被创建;同理,此时输出promise2第8行的resolve方法被调用,因此会接着执行第9行的then里面的内容,此时输出then2-1;第12行的then里面的内容会进入任务队列,等待执行。此时同等级别的任务队列里面有两个任务,分别是步骤2里面提到的第14行的then回调和步骤4提到的第12行的then回调,根据先后顺序,分别先后执行输出then1-2、then2-2。1.newPromise((resolve,reject)=>{2.console.log("promise1")3.resolve()4.}).then(()=>{5.console.log("then1-1")6.newPromise((resolve,reject)=>{7.console.log("promise2")8.resolve()9.}).then(()=>{10.console.log("then2-1")11.}).then(()=>{12.console.log("then2-2")13.});14.}).then(()=>{15.console.log("then1-2")16.})
添加回答
举报
0/150
提交
取消