2017-04-21 9 views
0

filewalker npmパッケージを使用してファイルを処理しています。ファイルウォーカーを使用中に `on( 'exit')`イベントが発生する前に手動でストリームを終了

特定の条件が満たされたらストリームを終了することによって、ストリームで読み込まれるファイルの量を制限しようとしています。 exitイベントを待つのではなく、5つのファイルパスをストリームします。 (これは膨大なファイル量のため、ストリームに改ページしたい)

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

手動でストリームをキャンセル/終了する方法はありますか?

+0

しかし、それはスクリプトの残りをキャンセルし、私は拒否しようとしたMr.Phoenix @ – Gntem

+0

を拒否呼び出し、エラーを投げてみたが、私は値を解決し、その値で何かを次のメソッドの実行を継続する必要があります – Kunok

答えて

0

これは疑問の答えではありませんが、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() 
}) 
関連する問題