如何控制同时运行异步http获取请求的数量?

时间:2018-03-14 09:00:22

标签: javascript node.js

我有一个生成的动态网址列表(大约30-40),我想通过http.get()获取并保存为文件。

我想确保并非所有这些都一次运行,因为我不想压倒我的实用程序客户端应用程序,也不想服务器。

如何限制这些请求的运行次数?

1 个答案:

答案 0 :(得分:1)

使用async模块,您可以使用parallelLimit()。您可以指定最大同时请求。

一次最多三个请求的示例(请注意您需要调整它):

const http = require('http')
const async = require('async')

const urls = [ /* array of urls */ ]
const fns = urls.map(url => {
  return cb => {
    http.get(url, res => {
      // handle res, call cb() when done
      cb()
    })
  }
})

async.parallelLimit(fns, 3, err => {})

供参考:https://caolan.github.io/async/docs.html#parallelLimit