递归检查dir是否包含文件并更早退出"/>
递归检查dir是否包含文件并更早退出
我尝试使用walker模块递归检查dir是否包含文件。
问题是,找到第一个文件后,如果不扫描所有目录树就无法更早退出。
查看下面的代码:
function dir_contains_files(dir) {
let files = 0
const walker = require('walker')
return walker(dir)
.on('file', (file, stats) => {
files++
console.log(files)
return files
})
.on('error', (err, entry) => {
console.warn(err, entry)
})
.on('end', function() {
console.log(files)
})
}
回答如下:由于幕后的require('walker')(dir)
是EventEmitter
,因此您可以在事件监听器中使用once
而不是on
。这是工作示例:
function dir_contains_files(dir) {
let files = 0
const walker = require('walker')
return walker(dir)
.once('file', (file, stats) => {
files++
console.log(files)
return files
})
.on('error', (err, entry) => {
console.warn(err, entry)
})
.on('end', function() {
console.log(files)
})
}
更多推荐
递归检查dir是否包含文件并更早退出
发布评论