使用 async.mapLimit 可以实现每次请求 5 个,一共有 100 个请求的需求。

示例代码:

const async = require('async');
const request = require('request');

const urls = []; // 存放所有请求的 url

// 初始化 urls 数组
for(let i = 0; i < 100; i++) {
  urls.push(`https://example.com/api/${i}`);
}

// 并发请求 5 个 url
async.mapLimit(urls, 5, function(url, callback) {
  request(url, function(err, response, body) {
    if(err) {
      callback(err);
    } else {
      callback(null, body);
    }
  });
}, function(err, results) {
  if(err) {
    console.error(err);
  } else {
    console.log(results);
  }
});

上述代码中,我们首先初始化了一个包含 100 个 url 的数组,然后使用 async.mapLimit 函数进行并发请求。

async.mapLimit 函数的第一个参数是要处理的数组,第二个参数是并发请求的数量,第三个参数是每次请求的回调函数,第四个参数是所有请求完成后的回调函数。

在每次请求的回调函数中,我们使用 request 模块发起请求,如果请求成功,则调用 callback 函数并传递请求结果;如果请求失败,则调用 callback 函数并传递错误信息。

在所有请求完成后的回调函数中,我们可以处理所有请求的结果。

Node.js 使用 async.mapLimit 实现并发请求:每次 5 个,共 100 个

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

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