promise.all怎么同时接受多个接口数据
时间: 2023-08-10 10:43:40 浏览: 96
`Promise.all` 可以同时接受多个接口数据,它接受一个由多个 `Promise` 实例组成的数组作为参数,返回一个新的 `Promise` 实例,当数组中所有 `Promise` 实例都执行成功时,该实例才会执行成功。其语法如下:
```javascript
Promise.all([promise1, promise2, promise3])
.then(([result1, result2, result3]) => {
// 所有 Promise 都成功执行的回调函数
})
.catch(error => {
// 任意一个 Promise 执行失败的回调函数
});
```
其中,`then` 回调函数的参数是一个数组,包含了每个 `Promise` 执行成功后的结果,数组中的顺序与传入 `Promise.all` 的数组顺序相同。如果其中任意一个 `Promise` 执行失败,则会跳过后续的 `Promise`,并执行 `catch` 回调函数。
举个例子,如果我们需要同时请求两个接口数据,并在两个接口数据都返回后对数据进行处理,可以这样实现:
```javascript
const promise1 = fetch('/api/data1');
const promise2 = fetch('/api/data2');
Promise.all([promise1, promise2])
.then(([response1, response2]) => {
return Promise.all([response1.json(), response2.json()]);
})
.then(([data1, data2]) => {
// 处理两个接口返回的数据
})
.catch(error => {
// 处理异常情况
});
```
在上面的例子中,我们使用 `fetch` 函数请求了两个接口数据,并将返回的 `Promise` 实例放入一个数组中传给 `Promise.all`。在 `then` 回调函数中,我们将返回的 `Response` 对象转化为 JSON 数据,并将两个 `Promise` 实例放入一个新的数组中再次调用 `Promise.all`,以等待两个接口数据全部返回。最终我们可以在第二个 `then` 回调函数中使用返回的数据进行处理。
阅读全文