对数组中的每个元素构造promise,用promise.all进行api调用,最慢的ajax调用影响了全局进度,有什么办法解决?
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这种情况要从业务逻辑入手。一方面,是不是真的所有的内容都要加载完才能进入下一步,把那些加载慢的放下一批可否?另一方面,队列是不是更合适,因为可以不断给出反馈?
或者你需要的是
Promise.race()
?