提供一个使用async/await和p-limit处理100个API请求的例子

下面是一个使用 async/awaitp-limit 库处理100个API请求的示例。这个示例将展示如何限制并发请求的数量,以避免过载。

1. 安装 p-limit 库

首先,你需要安装 p-limit 库。如果你还没有安装,可以使用以下命令:

npm install p-limit

2. 示例代码

下面的代码将创建100个模拟的API请求,并使用 p-limit 来限制并发请求的数量。我们将同时请求5个API,待其中一个完成后再继续请求下一个。

const axios = require('axios');
const pLimit = require('p-limit');

// 设置并发限制
const limit = pLimit(5);

// 模拟API请求
const fetchData = async (id) => {
  // 模拟网络延迟
  await new Promise(resolve => setTimeout(resolve, Math.random() * 2000));
  // 模拟 API 返回数据
  return `数据 ${id}`;
};

// 创建一个请求的数组
const createRequests = (count) => {
  return Array.from({ length: count }, (_, i) => limit(() => fetchData(i + 1)));
};

// 主函数
const main = async () => {
  const requests = createRequests(100); // 创建100个请求
  try {
    const results = await Promise.all(requests); // 等待所有请求完成
    console.log('所有请求结果:', results);
  } catch (error) {
    console.error('请求出现错误:', error);
  }
};

// 执行主函数
main();

3. 代码解析

  • 安装库: 使用 npm install p-limit 安装 p-limitaxios(如果需要)。
  • 限制并发: 使用 p-limit 创建一个限制为5的并发请求。
  • 模拟API请求: fetchData 函数模拟了一个API请求,使用 setTimeout 模拟网络延迟。
  • 创建请求: createRequests 函数生成100个请求,使用 limit 包装每个请求以确保并发限制。
  • 主函数: 在 main 函数中调用 Promise.all 等待所有请求完成,并处理结果或错误。

4. 运行代码

将以上代码保存到一个文件中(例如 index.js),然后在终端中运行:

node index.js

你将看到输出的结果,表示所有请求的返回数据。

5. 注意事项

  • 实际API: 在真实场景中,fetchData 函数可以替换为实际的API请求,例如使用 axios 进行HTTP请求。
  • 错误处理: 确保在生产代码中妥善处理错误,例如通过 try...catch 块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值