关于嵌套Promise的执行顺序,大佬帮帮忙
主要是嵌套Promise的问题
this.pro(this.pro3());
this.pro11().then(res => this.pro22().then(res => {this.pro33()}))
pro(fn) {
this.pro1().then(res => this.pro2().then(res => {fn}))
},
pro1(){
return new Promise((resolve,reject)=>{
setTimeout(() => {
console.log("Promise1", Date.now());
resolve();
}, 1000);
})
},
pro2(){
return new Promise((resolve,reject)=>{
setTimeout(() => {
console.log("Promise2", Date.now());
resolve();
}, 1000);
})
},
pro3(){
console.log("Promise3", Date.now());
},
pro11(){
return new Promise((resolve,reject)=>{
setTimeout(() => {
console.log("11Promise11", Date.now());
resolve();
}, 1000);
})
},
pro22(){
return new Promise((resolve,reject)=>{
setTimeout(() => {
console.log("22Promise22", Date.now());
resolve();
}, 1000);
})
},
pro33(){
console.log("33Promise33", Date.now());
}
执行的结果是
Promise3 1627545487809
Promise1 1627545488815
11Promise11 1627545488817
Promise2 1627545489817
22Promise22 1627545489818
33Promise33 1627545489818
我只是把pro3通过参数的方式传进去,为什么执行顺序完全不一样,并且是优先执行
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从你的代码上来看,pro需要的参数是一个函数,而你传的是
this.pro3()
,这是函数调用,所以会第一个执行,并把结果undefined传给pro,正确的写法应该是this.pro(this.pro3);