我正在使用node-webkit
创建相册管理器,并且我正在设置递归扫描以查找我的所有照片。我正在扫描一些10k文件,但是console.time只能保持返回0.000ms。我知道扫描发生得非常快,但它并不那么快。 我做错了吗?
var fs = require('fs');
var path = 'I:/pictures/';
console.time('read-directory');
var scanDirectory = function(path) {
fs.readdir(path,function(err,files) {
if(err) {
console.log(err);
} else {
files.forEach(function(file) {
fs.stat(path + file, function(err,stats) {
if(err) {
console.log(err);
} else {
if(stats.isDirectory()) {
scanDirectory(path + file + '/');
} else {
console.log(path + file);
}
}
});
});
}
});
}
scanDirectory(path);
console.timeEnd('read-directory');
答案 0 :(得分:0)
您正在使用异步的fs.readdir
。因此,您的计时器不依赖于您的scanDirectory执行。
事实上,它只是在您停止计时器后直接拨打scanDirectory(path)
时启动您的功能。
如果你想要,你可以使用fs.readdirSync
,这将阻止跳转到计时器端,因为它是一个同步功能。问题是,在此期间会冻结您的应用程序(如果您直接使用它)并且可能会慢慢执行。
为了获得执行asynchrone功能的时间,您可以使用Node-webkit的探查器工具。但是你需要手动过滤和求和......
另一个解决方案是使用timely
(它是一个npm包),它可以为同步或异步函数计时。