请教promise的问题,任务A是promise.all,任务C已经依赖任务B,A和B没有依赖,如何让任务B和任务A并发?

发布于 2022-09-06 08:37:07 字数 695 浏览 15 评论 0

主要是两个疑问:

  1. 任务B这样的promise如何加到all里面?
  2. 怎么让另外一个任务依赖all?
    getAll() {
      this.loading = true
      let self = this

      //任务A
      Promise
      .all([apiGetFalvors(), apiGetImages()])
      .then(([flavors, images]) => {
        this.flavorList = flavors.data
        this.imageList = images.data
      })
      .catch((err) => {
        console.log(err)
      })

      //任务B
      var p = new Promise(function(resolve, reject) {
        self.getDesktopList(resolve)
      });

      //任务C
      p.then(function() {
          self.loading = false
          self.refreshStatus()
        })
        .catch(function() {})
    },

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

2022-09-13 08:37:07

Promise的本质是把回调函数用链式写法来表示,因此你的代码里A和B已经是并发的了

Promise.all方法用于将多个 Promise 实例,包装成一个新的 Promise 实例,也就是说Promise.all返回的就是一个Promise,只不过它要在所有子任务都fulfilled后在会变成fulfilled,而只要有一个rejected它就会rejected。如果有任务D依赖它,放在任务A的then里就好了

 getAll() {
      this.loading = true
      let self = this

      //任务A
      Promise
      .all([apiGetFalvors(), apiGetImages()])
      .then(([flavors, images]) => {
        this.flavorList = flavors.data
        this.imageList = images.data
      })
      .then(()=>{
          //任务D,依赖A
          return new Promise((resolve,reject)=>{
              //任务D的逻辑
      })
      .catch((err) => {
        console.log(err)
      })

      //任务B
      var p = new Promise(function(resolve, reject) {
        self.getDesktopList(resolve)
      });

      //任务C
      p.then(function() {
          self.loading = false
          self.refreshStatus()
        })
        .catch(function() {})
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文