为了账号安全,请及时绑定邮箱和手机立即绑定

怎样把promise封装成 有执行循序且链式调用只返回一个promise 的方法?

怎样把promise封装成 有执行循序且链式调用只返回一个promise 的方法?

智慧大石 2019-01-02 22:09:28
问题描述碰到这个问题是在nuxt框架的nuxtServerInit里,用于服务端渲染,在这个方法会在服务端阻塞,等待返回promise时执行,我想在这个方法里有序的执行多个promise,因为其他的promise要基于某一个的promise返回值,用then()调用的时候这里的阻塞不会等待到then里面的执行完毕,用promise.all的话又不能保证执行循序,求解问题出现的环境背景及自己尝试过哪些方法相关代码// 请把代码文本粘贴到下方(请勿用图片代替代码)nuxtServerInit(store, { params, route, req }) {//在服务端只会阻塞到返回promiseconst initData = [store.dispatch('getToken'),//这个执行完后会拿到一个token,store.dispatch('getLawyerByIndex')//这个必须基于上面的token去执行]return Promise.all(initData)}链式调用的话只能拿到'getToken',不会拿到'getLawyerByIndex',用promise.all是可以拿到 但是执行循序没有保证的你期待的结果是什么?实际看到的错误信息又是什么?
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

我表示没有看懂,既然要串型执行,直接按照

return Promise.resolve(...)
              .then(...)
              .then(...)
              .then(...)

的方式不就好了吗?

这个过程其实类似 Array.reduce 的过程,在每个 then 的返回值中,叠加期望返回的结果就好了。


查看完整回答
反对 回复 2019-01-02
  • 1 回答
  • 0 关注
  • 746 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号