我有一本包含很多文件的字典,每个文件中的文本都是整数。 我想异步检查所有文件并找到最大数量。
最好的方法是什么???
此代码是同步的:
"use strict";
var fs = require('fs');
var dir = process.argv[2];
fs.readdir(dir, function (err, filesNames) {
if (err) throw err;
var max = Number.MIN_VALUE;
filesNames.forEach(function (fileName) {
//a synchronous function
var file = fs.readFileSync(dir + fileName, 'utf-8');
var num = parseInt(file);
max = max < num ? num : max;
});
console.log(max);
});
但是我想要一个异步函数! 我已经尝试过,但我确信还有更好的方法。
这是我的异步函数:
"use strict";
var fs = require('fs');
var dir = process.argv[2];
fs.readdir(dir, function (err, filesNames) {
if (err) throw err;
var max = Number.MIN_VALUE;
var i = 0;
filesNames.forEach(function (fileName) {
//an asynchronous function
fs.readFile(dir + fileName, 'utf-8', function (err, file) {
if (err) throw err;
var num = parseInt(file);
max = max < num ? num : max;
i++;
if (i == filesNames.length) {
console.log(max);
}
});
});
});
最佳答案
从广泛使用的解决方案开始 - async包裹。它正在为您完成大部分工作。
这是一些异步教程:
https://github.com/justinklemm/nodejs-async-tutorial
因此,如果您确实有大量文件,可以使用 async.each
或 async.eachLimit
。
Async 解决了 Node.js 中几乎所有的异步情况
关于javascript - 异步读取文件 - 异步读取所有文件并找到最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33276896/