Node.js 批量执行请求 - 每次5个 - 使用 async/await 和 axios
Node.js 批量执行请求 - 每次 5 个 - 使用 async/await 和 axios
本示例演示如何使用 Node.js 和 axios 库,结合 async/await 语法,实现批量执行 HTTP 请求,每次处理 5 个请求。
const axios = require('axios');
async function batchRequest(urls) {
const batchSize = 5; // 每次执行的请求数量
const results = [];
for (let i = 0; i < urls.length; i += batchSize) {
const batchUrls = urls.slice(i, i + batchSize);
const batchPromises = batchUrls.map(url => axios.get(url));
const batchResults = await Promise.all(batchPromises);
results.push(...batchResults);
}
return results;
}
// 示例用法
const urls = [...]; // 待请求的 URL 列表
batchRequest(urls)
.then(results => {
// 处理返回结果
})
.catch(error => {
// 处理错误
});
代码说明:
batchRequest(urls)函数:- 接收一个 URL 列表
urls作为参数。 - 定义
batchSize为 5,表示每次执行的请求数量。 - 使用循环将
urls分成多个批次,每次处理batchSize个 URL。 - 使用
Promise.all()并发执行每个批次的请求。 - 将每个批次的请求结果合并到
results数组中。 - 返回所有请求结果的数组。
- 接收一个 URL 列表
- 示例用法:
- 将待请求的 URL 列表赋值给
urls。 - 调用
batchRequest(urls)执行批量请求。 - 使用
.then()和.catch()处理请求成功和失败的情况。
- 将待请求的 URL 列表赋值给
注意事项:
- 使用
Promise.all()时要注意异常处理,避免其中一个请求失败导致整个 Promise 被 reject。 - 可以根据实际情况调整
batchSize的值,以平衡性能和效率。
更多优化:
- 可以使用
async/await改进异常处理逻辑,使代码更简洁易读。 - 可以使用其他库,例如
got或node-fetch,来代替axios。 - 可以根据实际需求,对请求结果进行更复杂的处理。
原文地址: https://www.cveoy.top/t/topic/ndrk 著作权归作者所有。请勿转载和采集!