Выйдите из потока вручную до достижения события `on('exit')` при использовании filewalker

Я использую filewalker Пакет npm для просмотра файлов.

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

  getFilePath: (dirPath, fileMatchExpression) => {
    return new Promise((resolve, reject) => {
      filewalker(dirPath)
      .on('file', filePath => {
        if (filePath.match(fileMatchExpression)){
          resolve(filePath)
          // how to force exit on this line?
        }
      })
      .on('error', err => reject(err))
      .on('done', _ => console.log('DONE!!'))
      .walk()
    })

Есть ли способ отменить / выйти из потока вручную?

1 ответ

Решение

Хотя это не ответ на вопрос, я решил эту проблему, заменив filewalker библиотека с walk, Это в основном делает то же самое, кроме next функция, которая позволяет мне контролировать, будет ли программа выполняться следующей или нет.

const walk = require('walk')
let walker = walk.walk(dataDirPath, {followingLinks: false})
let counter = 0
walker.on('file', (root, stat, next) => {
  console.log(root + '/' + stat.name);
  counter++
  if(counter < 1) next()
})
Другие вопросы по тегам