据我了解,async
仅适用于数组。
我的应用程序正在读取1.2GB的文件,我想以1024KB的部分内容阅读。因为RAM问题,我想每次读10个部分。从documentation开始,eachlimit(arr, 10, iterator, callback)
对我来说是正确的功能。
问题在于我无法将所有部件放入阵列中。这,因为如果我这样做,Ram问题将会提升,eachSeries
是多余的。
换句话说。我想切换以下循环:
for (var rangeStart = 0; rangeStart < stats.size; rangeStart = rangeStart + partSize) {
//Where stats.size = 1200000000; partsize = 1024000, put the part of the file in the range into a buffer
}
同步版本,这样我每次完成10次循环,然后继续。
答案 0 :(得分:1)
您不需要异步来转换&amp;将大文件上传到S3。
只需流(大)文件,执行您需要的转换,并使用Knox将结果直接传递给amazon S3
如果您需要有关如何执行此操作的详细示例,请参阅:https://www.npmjs.org/package/stream-to-s3(我编写了一个快速节点模块来为您说明它=)
安装:
npm install stream-to-s3
用法:
var S = require('stream-to-s3');
var file = __dirname+'/your-large-file.txt';
S.streamFileToS3(file, function(){
console.log('Awesomeness', file, 'was uploaded!');
console.log('Visit:',S.S3FileUrl(file));
});
完成。
关于GitHub的更多细节:https://github.com/nelsonic/stream-to-s3