我对 JS 很陌生,对 Node.js 甚至更陌生。因此,使用“传统”编程范例,我的文件如下所示:
var d = require('babyparse');
var fs = require('fs');
var file = fs.readFile('SkuDetail.txt');
d.parse(file);
所以这有很多问题:
- 这不是异步的
- 我的文件大于默认的最大文件大小(此文件大约为 60mb),因此目前会损坏(不能 100% 确定是否是这个原因)。
我的问题:如何异步加载一个大文件(对于将来的使用,该文件将明显大于 60mb),并在获取信息时进行解析。那么作为后续,我如何知道一切何时完成?
最佳答案
您应该创建一个ReadStream 。常见的模式如下所示。您可以在 data
事件中获取可用数据时对其进行解析。
function readFile(filePath, done) {
var
stream = fs.createReadStream(filePath),
out = '';
// Make done optional
done = done || function(err) { if(err) throw err; };
stream.on('data', function(data) {
// Parse data
out += data;
});
stream.on('end', function(){
done(null, out); // All data is read
});
stream.on('error', function(err) {
done(err);
});
}
您可以使用如下方法:
readFile('SkuDetail.txt', function(err, out) {
// Handle error
if(err) throw err;
// File has been read and parsed
}
如果将解析的数据添加到 out
变量,则整个解析的文件将被发送到 done
回调。
关于javascript - 更好地使用异步IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30774201/