Promise.all并发请求 并举个列子
时间: 2023-08-03 15:02:39 浏览: 129
当使用 Promise.all 来处理并发请求时,可以将多个请求封装成 Promise 对象,并将这些 Promise 对象作为参数传递给 Promise.all 方法。下面是一个示例:
```javascript
const fetchUser = () => {
return new Promise((resolve, reject) => {
// 模拟异步请求用户信息
setTimeout(() => {
resolve({ id: 1, name: 'John' });
}, 1000);
});
};
const fetchPosts = () => {
return new Promise((resolve, reject) => {
// 模拟异步请求文章列表
setTimeout(() => {
resolve([{ id: 1, title: 'Post 1' }, { id: 2, title: 'Post 2' }]);
}, 1500);
});
};
const fetchComments = () => {
return new Promise((resolve, reject) => {
// 模拟异步请求评论列表
setTimeout(() => {
resolve([{ id: 1, content: 'Comment 1' }, { id: 2, content: 'Comment 2' }]);
}, 2000);
});
};
// 并发发起多个请求
Promise.all([fetchUser(), fetchPosts(), fetchComments()])
.then(([user, posts, comments]) => {
console.log('User:', user);
console.log('Posts:', posts);
console.log('Comments:', comments);
// 在这里可以对获取到的数据进行处理
})
.catch(error => {
console.error('Error:', error);
// 在这里可以处理错误情况
});
```
在上述示例中,`fetchUser()`、`fetchPosts()` 和 `fetchComments()` 分别是模拟的异步请求,它们分别返回一个 Promise 对象。通过 `Promise.all` 方法将这些 Promise 对象组合在一起,并在所有请求完成后进行处理。在 `.then` 回调中,我们可以获取到每个请求的结果,并对其进行进一步处理。在 `.catch` 回调中,我们可以捕获并处理请求过程中发生的错误。
这样,我们就可以同时发起多个请求,并在所有请求完成后进行统一的处理。
阅读全文