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

问题描述

碰到这个问题是在nuxt框架的nuxtServerInit里,用于服务端渲染,在这个方法会在服务端阻塞,等待返回promise时执行,我想在这个方法里有序的执行多个promise,因为其他的promise要基于某一个的promise返回值,用then()调用的时候这里的阻塞不会等待到then里面的执行完毕,用promise.all的话又不能保证执行循序,求解

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
nuxtServerInit(store, { params, route, req }) {//在服务端只会阻塞到返回promise
const initData = [

store.dispatch('getToken'),//这个执行完后会拿到一个token,
store.dispatch('getLawyerByIndex')//这个必须基于上面的token去执行

]
return Promise.all(initData)
}
链式调用的话只能拿到'getToken',不会拿到'getLawyerByIndex',用promise.all是可以拿到 但是执行循序没有保证的

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 2.4k
3 个回答

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

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

的方式不就好了吗?

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

把你要请求的接口构造成一个list
['/info','/detail'...]
然后用for循环来请求,在for的代码块里await

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题