我试图逐行读取一个文件,并使用读取的数据执行一些异步函数。我需要限制它的并发性。我知道如何逐行读取,以及如何使用模块进行并发,但我不知道如何将它们放在一起。我用的是逐行和咽喉模块。
到目前为止,我一直在努力,但没有成功,以下是我的尝试:
// 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()
})
})发布于 2017-08-04 05:42:24
您需要在throat回调中使用line
const CONCURRENCY = 5
const throat = require('throat')
const LineByLineReader = require('line-by-line')
lr = new LineByLineReader('urls.txt')
lr.on('line', throat(CONCURRENCY, main))此外,您还可以使用节点的内置读出线模块,而不是line-by-line
const fs = require('fs')
const readline = require('readline')
readline.
createInterface({input: fs.createReadStream('urls.txt')}).
on('line', throat(CONCURRENCY, main))https://stackoverflow.com/questions/45498456
复制相似问题