2017-08-04 13 views
1

ファイルを1行ずつ読み込み、読み込んだデータを使って非同期関数を実行しようとしています。私はこれの同時性を制限する必要があります。私は行単位での読み方と、モジュールを使って並行処理を行う方法を知っていますが、それらをまとめる方法はわかりません。私はline-by-lineとthroatモジュールを使用しています。ここで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

あなたはまた

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コールバックの内側にthroatを使用する必要がある、あなたの代わりにline-by-lineの、ノードの組み込みreadlineモジュールを使用することができます:

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

readline. 
    createInterface({input: fs.createReadStream('urls.txt')}). 
    on('line', throat(CONCURRENCY, main)) 
関連する問題