鍍金池/ 問答/Java  HTML/ 對數(shù)組中的每個元素構(gòu)造promise,用promise.all進(jìn)行api調(diào)用,最

對數(shù)組中的每個元素構(gòu)造promise,用promise.all進(jìn)行api調(diào)用,最慢的ajax調(diào)用影響了全局進(jìn)度,有什么辦法解決?

        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);
        });
回答
編輯回答
蝶戀花

這種情況要從業(yè)務(wù)邏輯入手。一方面,是不是真的所有的內(nèi)容都要加載完才能進(jìn)入下一步,把那些加載慢的放下一批可否?另一方面,隊列是不是更合適,因為可以不斷給出反饋?

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

2017年1月28日 09:19