我正在通过nodeschool.io learnyounode和第四项挑战,即:
编写一个程序,该程序使用单个异步文件系统操作来读取文件并将其包含的换行符数打印到控制台(stdout),类似于运行cat file | wc -l。
我写了一个解决方案,它与提供的解决方案不同,但两者似乎都有效,我很想知道哪种风格更好,以及它们的功能如何不同。
这是我的解决方案:
var fs = require('fs');
var fileAsArray = [];
function asyncRead(print) {
fs.readFile(process.argv[2], 'utf-8', function callback(error, contents) {
fileAsArray = contents.split('\n');
print();
})
}
function printNumberOfLines() {
console.log(fileAsArray.length - 1);
}
asyncRead(printNumberOfLines);
以下是learnyounode提供的解决方案:
var fs = require('fs')
var file = process.argv[2]
fs.readFile(file, function (err, contents) {
// fs.readFile(file, 'utf8', callback) can also be used
var lines = contents.toString().split('\n').length - 1
console.log(lines)
})
我还注意到learnyounode代码缺少分号。我认为强烈推荐/要求他们?