Javascript 如何在node.js中进行逐行并发限制

Javascript 如何在node.js中进行逐行并发限制,javascript,node.js,Javascript,Node.js,我试图逐行读取一个文件,并使用读取的数据执行一些异步函数。我需要限制此操作的并发性。我知道如何逐行阅读,以及如何使用模块进行并发,但我不知道如何将它们组合在一起。我正在使用逐行和喉咙模块 以下是我迄今为止尝试但未成功的内容: // modules const CONCURRENCY = 5 const throat = require('throat')(CONCURRENCY) const LineByLineReader = require('line-by-line') lr = new

我试图逐行读取一个文件,并使用读取的数据执行一些异步函数。我需要限制此操作的并发性。我知道如何逐行阅读,以及如何使用模块进行并发,但我不知道如何将它们组合在一起。我正在使用逐行和喉咙模块

以下是我迄今为止尝试但未成功的内容:

// modules
const CONCURRENCY = 5 
const throat = require('throat')(CONCURRENCY)
const LineByLineReader = require('line-by-line')
lr = new LineByLineReader('urls.txt')

throat(() => { 
  lr.on('line', function (line) {

      return main(line) // this is an async function that returns a promise
      Promise.resolve()

  })
})

您需要在
回调中使用
咽喉

const CONCURRENCY = 5
const throat = require('throat')
const LineByLineReader = require('line-by-line')
lr = new LineByLineReader('urls.txt')

lr.on('line', throat(CONCURRENCY, main))
此外,您还可以使用节点的内置模块,而不是逐行使用

const fs = require('fs')
const readline = require('readline')

readline.
  createInterface({input: fs.createReadStream('urls.txt')}).
  on('line', throat(CONCURRENCY, main))

您需要在
回调中使用
咽喉

const CONCURRENCY = 5
const throat = require('throat')
const LineByLineReader = require('line-by-line')
lr = new LineByLineReader('urls.txt')

lr.on('line', throat(CONCURRENCY, main))
此外,您还可以使用节点的内置模块,而不是逐行使用

const fs = require('fs')
const readline = require('readline')

readline.
  createInterface({input: fs.createReadStream('urls.txt')}).
  on('line', throat(CONCURRENCY, main))