我有一个 nodejs 程序从服务器下载一堆文件。问题是进程在文件实际下载之前就退出了,所以我得到了一个损坏的文件。
for(var i = 0; i < items.length; i++){
var file = fs.createWriteStream(items[i].filename);
var request = http.get(items[i].url, function (response) {
console.log('got:', i);
response.pipe(file);
});
request.on('end', function () {
console.log('done with ' + filePath);
});
}
但是当最后一个请求收到响应时,进程退出。我从来没有得到“完成”日志。
有人有想法吗?
谢谢!
最佳答案
您没有正确处理异步性。
尝试使用名为 async
的库并像这样使用它
async.eachSeries(items, function (item, callback) {
var file = fs.createWriteStream(item.filename);
var request = http.get(item.url, function (response) {
response.pipe(file);
});
request.on('end', function () {
console.log('done with ' + filePath);
callback(null);
});
}, function (err) {
console.log('All done!');
});
关于node.js - Node 进程在 writeStream 结束前退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32497063/