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 => {
    // 处理错误
  });

代码说明:

  1. batchRequest(urls) 函数:
    • 接收一个 URL 列表 urls 作为参数。
    • 定义 batchSize 为 5,表示每次执行的请求数量。
    • 使用循环将 urls 分成多个批次,每次处理 batchSize 个 URL。
    • 使用 Promise.all() 并发执行每个批次的请求。
    • 将每个批次的请求结果合并到 results 数组中。
    • 返回所有请求结果的数组。
  2. 示例用法:
    • 将待请求的 URL 列表赋值给 urls
    • 调用 batchRequest(urls) 执行批量请求。
    • 使用 .then().catch() 处理请求成功和失败的情况。

注意事项:

  • 使用 Promise.all() 时要注意异常处理,避免其中一个请求失败导致整个 Promise 被 reject。
  • 可以根据实际情况调整 batchSize 的值,以平衡性能和效率。

更多优化:

  • 可以使用 async/await 改进异常处理逻辑,使代码更简洁易读。
  • 可以使用其他库,例如 gotnode-fetch,来代替 axios
  • 可以根据实际需求,对请求结果进行更复杂的处理。
Node.js 批量执行请求 - 每次5个 - 使用 async/await 和 axios

原文地址: https://www.cveoy.top/t/topic/ndrk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录