js如何并发20个请求
时间: 2024-09-10 16:08:58 浏览: 39
在JavaScript中,并发处理多个HTTP请求通常会涉及到异步编程技术。有几种常见的方法可以实现这个目标:
1. **Promise.all()**: 使用`Promise.all()`函数可以同时发送多个Promise对象,并在所有请求都完成时返回一个新的Promise。当所有的请求都成功时,新Promise解析为一个包含每个请求结果的数组;如果有任何一个请求失败,则新Promise拒绝并传递失败原因。
```javascript
let promises = [];
for (let i = 0; i < 20; i++) {
promises.push(fetch('http://api.example.com/data' + i));
}
Promise.all(promises)
.then(results => {
// 处理所有请求的结果
})
.catch(error => {
// 处理错误
});
```
2. **async/await**: 你可以使用async函数和await关键字逐个等待Promise链的完成,这种方式让代码看起来更像同步,但实际上仍然是异步的。
```javascript
async function sendRequests() {
let results = [];
for (let i = 0; i < 20; i++) {
try {
const response = await fetch('http://api.example.com/data' + i);
results.push(response.json());
} catch (error) {
console.error(`Request ${i} failed`, error);
}
}
return results;
}
```
3. **第三方库**:如`axios`, `fetch-promise-all`, 或 `concurrently` 等库专门用于管理并发请求,它们提供更高级的功能,比如进度跟踪、超时控制等。
无论哪种方法,注意控制并发数避免阻塞主线程,因为浏览器的同源策略可能会限制并发的数量。同时,处理好错误和异常情况也很重要。
阅读全文