如何解决Javascript readdirSync-计算函数外部的字符串数
我正在尝试编写一个脚本,该脚本允许我在多个文件夹中搜索字符串,然后返回输出。我设法找到了所需的readdirSync函数,但是我无法打印出找到的字符串总数,因为它是在函数完成之前运行的。请参见下面的示例。
var totalNumberOfStringFound = 0;
function numberofStringsInFolder(dir,search) {
var fs = require('fs');
var results = [];
var searchTerm = search;
fs.readdirSync(dir).forEach(function (file) {
file = dir + '/' + file;
var stat = fs.statSync(file);
if (stat && stat.isDirectory()) {
results = results.concat(numberOfTagsInFolder(file));
} else {
fs.readFile(file,bar);
function bar(err,data) {
err ? Function('error','throw error')(err) : (fileContent = data.toString('utf8'));
var count = (fileContent.match(new RegExp(searchTerm,'gi')) || []).length;
totalNumberOfStringFound = totalNumberOfStringFound + count;
console.log('NUMBER OF STRINGS FOUND: ' + totalNumberOfStringFound);
}
// Holds the list of files found
results.push(file);
}
});
console.log("totalNumberOfStringFound: " + totalNumberOfStringFound);
return results;
}
numberofStringsInFolder('./folder','HELLO');
输出
totalNumberOfStringFound: 0
NUMBER OF STRINGS FOUND: 2
NUMBER OF STRINGS FOUND: 3
输出(totalNumberOfStringFound)应该为3,但是由于在该函数完成之前调用了totalNumberOfStringFound,因此它显示为0。我在网上看了看,有些人在使用timeout函数,但是我不想使用那是因为我不知道要花多长时间。如果有人可以提供帮助,我将不胜感激。谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。