主题
并发请求
背景
有些场景下,需要同时请求多个接口,并在所有接口都返回结果后,进行下一步操作。例如,用户在一个页面上触发了多个操作,每个操作都需要从不同的 API 获取数据。为了提高效率,我们希望能够并发地发起这些请求,而不是一个接一个地等待每个请求完成。
实现思路
- 使用
Promise.all方法来处理多个并发请求。 - 将每个请求封装成一个返回
Promise的函数。 - 使用
Promise.all来等待所有请求完成,并处理结果。
核心点
Promise.all 接受一个包含多个 Promise 的数组,并返回一个新的 Promise,该 Promise 在所有输入的 Promise 都成功时解析,或者在任何一个输入的 Promise 失败时拒绝。
代码示例
js
Promise.all([fetchData('/api/data1'), fetchData('/api/data2'), fetchData('/api/data3')])
.then((results) => {
console.log('All data fetched successfully:', results)
// 处理所有请求的结果
})
.catch((error) => {
console.error('Error fetching data:', error)
})