Promise按顺序执行
我知道要顺序执行Promise用他的than方法,但是这个太冗长了,
如何用all方法做到顺序执行?或者其它方法?
let a = () => {
return new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve()
console.log(1)
},100)
})
}
let b = () => {
return new Promise((resolve,reject)=>{
resolve()
console.log(2)
})
}
Promise.all([a(),b()]);// 2 1
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
第一,需要搞清楚的是Promise.all是并行执行Promise而不是顺序执行;
第二,一个promise在创建的时候就会执行,也就是说只要顺序创建,那就能顺序执行。
参考了这篇文章中的代码,总结的以上两点应该就可以解决你的问题了
http://fex.baidu.com/blog/201...
似乎目前没有官方的API,但是这个功能是可以自己实现的。今天刚好遇到这个问题就自己写了一个,楼主可以参考一下;
promises.reduce((p1,p2)=>p1.then(()=>p2)).then((r)=>r)
自己封装一个函数,里面用then把promise连接起来。
可以使用 co https://github.com/tj/co
或者 async 和 await
https://github.com/jun-lu/pro...
这个库的 .flat 可以链接promise并顺序执行
其实还得加一个功能,当其中一个promise发生错误的时候,剩下的promise就全部停止