RxJsとnode.jsを使用してディレクトリツリーを走査しようとしています。RxJsを使用してnode.js内のディレクトリツリーを走査する
私が働いて解決策を考え出した:非同期操作を使用して.map
へのより効率的な/簡潔な方法はあり
- :
const filesInDir = Rx.Observable.fromNodeCallback(fs.readdir) const statFile = Rx.Observable.fromNodeCallback(fs.stat) const listFiles = (prefix, dir = '') => { const file$ = filesInDir(`${prefix}/${dir}`) .flatMap(file => file) .filter(file => !file.startsWith('.')) const isDir$ = file$ .map(file => statFile(`${prefix}/${dir}/${file}`)) .flatMap(file => file) .map(file => file.isDirectory()) return file$ .zip(isDir$, (file, isDir) => {return {file, isDir}}) .map(f => { if (f.isDir) { return listFiles(prefix, `${dir}/${f.file}`) } return Rx.Observable.return(`${dir}/${f.file}`) }) .flatMap(file => file) } listFiles('public') .toArray() .subscribe(list => { console.log(list) })
質問?