用Promise封装了一个方法A,然后另一个方法B去调用这个封装的A方法,那么B方法怎么返回一个Promise对象?
function pro(){
return new Promise(resolve=>{
resolve()
})
}
function a(){
return pro().then(res=>{
setTimeout(()=>{
console.log(1)
},2000)
})
}
function b(){
return pro().then(res=>{
console.log(2)
})
}
function c(){
return pro().then(res=>{
console.log(3)
})
}
a().then(b).then(c);
//2 3 1
最后的结果为什么不是1 2 3?
这样返回Promise是正确的吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
顺序是没问题只不过 setTimeout是宏任务 其他都是微任务具体原理可参考:https://segmentfault.com/a/11...
从语法上来说没啥错,但我觉得你想表达的应该是:
你的代码,a立即返回了一个resolved的promise,所以直接走了b,并没有等待。要按顺序输出,必须在setTimeout中resolve
因为你
a
方法只是创建了一个定时器,并不代表这个定时器回调执行了。