请各位大佬指点!用Promise封装了一个方法A,然后另一个方法B去调用这个封装的A方法,那么B方法怎么返回一个Promise对象?

functionpro(){
returnnewPromise(resolve=>{
resolve()
})
}
functiona(){
returnpro().then(res=>{
setTimeout(()=>{
console.log(1)
},2000)
})
}
functionb(){
returnpro().then(res=>{
console.log(2)
})
}
functionc(){
returnpro().then(res=>{
console.log(3)
})
}
a().then(b).then(c);
//231
最后的结果为什么不是123?这样返回Promise是正确的吗?
慕田峪7331174
浏览 736回答 2
2回答

梦里花落0921

因为你a方法只是创建了一个定时器,并不代表这个定时器回调执行了。functiona(){returnpro().then(res=>{returnnewPromise((reslove)=>{setTimeout(()=>{console.log(1)reslove();},2000)})})}

不负相思意

从语法上来说没啥错,但我觉得你想表达的应该是:functionpro(){returnnewPromise(resolve=>{resolve()})}functiona(){returnpro().then(res=>{returnnewPromise((resolve,reject)=>{setTimeout(()=>{console.log(1);resolve()},2000)})})}functionb(){returnpro().then(res=>{console.log(2)})}functionc(){returnpro().then(res=>{console.log(3)})}a().then(b).then(c);你的代码,a立即返回了一个resolved的promise,所以直接走了b,并没有等待。要按顺序输出,必须在setTimeout中resolve
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript