2017-08-04 76 views
1

我正在嘗試逐行讀取文件,並使用讀取的數據執行一些異步函數。我需要限制這種併發性。我知道如何逐行閱讀,以及如何使用模塊進行併發,但我不知道如何將它們放在一起。我正在使用逐行和喉嚨模塊。如何在node.js中逐行執行併發限制

下面是到目前爲止我的嘗試沒有成功:

// 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() 

    }) 
}) 

回答

0

您需要使用throatline回調的內部

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

lr.on('line', throat(CONCURRENCY, main)) 

此外,您還可以使用節點的內置readline模塊,而不是line-by-line

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

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