let promises = [1,2,3,4].map(function (id) {
return me.getHighBid(id);
});
Promise.all(promises).then(posts){
console.log(posts)
}
代码如上,使用Promise.all管理4个ajax请求,那么成功返回来的posts数组会严格按照id分别为1,2,3,4请求得到的数据来排序吗
let promises = [1,2,3,4].map(function (id) {
return me.getHighBid(id);
});
Promise.all(promises).then(posts){
console.log(posts)
}
代码如上,使用Promise.all管理4个ajax请求,那么成功返回来的posts数组会严格按照id分别为1,2,3,4请求得到的数据来排序吗
只会按并发执行的顺序返回!
比如有三个axios请求,Promise.all(p1, p2, p3),因为是并发异步执行所以p2有可能比p1先执行,如果请求顺序是p2, p1, p3,那么返回结果的顺序就是p2,p1,p3顺序执行的结果
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
会的 (我靠两个字的答案还不能提交)
如果这个
promise
队列里出现了reject
,那么Promise.all()
返回的结果会被一个reject
而报销(其他正常返回也没用了),所以为此你最好使队列每一个ajax
封装一个:这样也可以解决某一个
ajax
响应时间巨长,导致Promise.all()
一直pending
的问题