promis.all返回数组怎么区分哪个结果是哪个请求
时间: 2023-09-06 17:04:42 浏览: 82
深入理解Promise.all
5星 · 资源好评率100%
使用Promise.all返回的结果是一个数组,按照传入的Promise顺序排列。
为了区分哪个结果是哪个请求,可以根据传入的Promise顺序来对应结果,或者添加标识符来识别结果。
第一种方式是根据传入的Promise顺序来对应结果。在生成Promise数组时,可以将每个请求的索引或标识符作为参数传入Promise构造函数中,然后在Promise的回调函数中可以通过索引或标识符来对应请求的结果。
示例代码如下:
```javascript
const promises = [
fetch('api1'),
fetch('api2'),
fetch('api3')
];
Promise.all(promises).then(results => {
// 根据传入的Promise顺序对应结果
const result1 = results[0];
const result2 = results[1];
const result3 = results[2];
// 进行相应处理
// ...
});
```
第二种方式是添加标识符来识别结果。在生成Promise数组时,可以为每个请求添加一个标识符,然后在Promise的回调函数中根据标识符来识别结果。
示例代码如下:
```javascript
const requests = [
{ id: 1, promise: fetch('api1') },
{ id: 2, promise: fetch('api2') },
{ id: 3, promise: fetch('api3') }
];
const promises = requests.map(request => request.promise);
Promise.all(promises).then(results => {
// 根据标识符识别结果
const result1 = results.find(result => requests[0].id === result.id);
const result2 = results.find(result => requests[1].id === result.id);
const result3 = results.find(result => requests[2].id === result.id);
// 进行相应处理
// ...
});
```
通过以上方式,可以方便地区分Promise.all返回的结果中的每个请求对应的结果。
阅读全文