对数组中的每个元素构造promise,用promise.all进行api调用,最慢的ajax调用影响了全局进度,有什么办法解决?

发布于 2022-09-06 10:08:42 字数 1332 浏览 9 评论 0

        var i
        var promiseArray = []
        const self = this
        for (i in self.platformList) {
          // debugger
          var p = new Promise(function(resolve, reject) {
            apiGetPlatformIsOnline(self.platformList[i].id)
              .then(response => {
                console.log(response.data)
                resolve(response.data)
              })
              .catch((err) => {
                resolve(response.data)
              })
          });
          promiseArray.push(p)
        }
        console.log(promiseArray)
        Promise.all(promiseArray).then(function(results) {
          var j
          
          for (j in results) {
            console.log("results[j]",results[j])
            var k
            for(k in self.platformList){
              if(results[j].platform_id === self.platformList[k].id.toString()){
                console.log(self.platformList[k].id)
                self.$set(self.platformList[k], 'online', 'true')
              }
              if(results[j].platform_id ==='undefined'){
                self.$set(self.platformList[k], 'online', 'false')
              }
            }
          }
          console.log("success")
        }).catch(function(r) {
          console.log("errzzzzz");
          console.log(r);
        });

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

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

发布评论

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

评论(1

薄荷港 2022-09-13 10:08:42

这种情况要从业务逻辑入手。一方面,是不是真的所有的内容都要加载完才能进入下一步,把那些加载慢的放下一批可否?另一方面,队列是不是更合适,因为可以不断给出反馈?

或者你需要的是 Promise.race()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文