我有一個包含大量文件的字典,每個文件中的文本都是整數。 我想要異步查看所有文件並查找最大數量。異步讀取文件 - 異步讀取所有文件並查找最大值
什麼是最好的辦法呢?
此代碼是同步:
"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);
}
});
});
});
更好的怎麼樣?如果你正在尋找一個優雅的解決方案,去承諾。 – Bergi
你可以試試'Q'nom – prasun