Выйдите из потока вручную до достижения события `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()
})