Как сделать построчное ограничение параллелизма в node.js

1

Я пытаюсь прочитать файл за строкой и выполнить некоторую асинхронную функцию, используя чтение данных. Мне нужно ограничить параллелизм этого. Я умею читать строки за строкой и как выполнять параллелизм с использованием модулей, но я не знаю, как их собрать. Я использую линейные и горловые модули.

Вот что я пробовал до сих пор без успеха:

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

  })
})
Теги:

1 ответ

0
Лучший ответ

Вам нужно использовать 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))

Кроме того, вы можете использовать встроенный модуль readline вместо line-by-line:

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню