Я использую функцию, которую нашел в Интернете:
var request = require('request');
function downloadFile(file_url , targetPath){
console.log("download of : " + file_url);
console.log("here : " + targetPath);
// Save variable to know progress
var received_bytes = 0;
var total_bytes = 0;
var req = request({
method: 'GET',
uri: file_url
});
req.on('response', function ( data ) {
// Change the total bytes value to get progress later.
total_bytes = parseInt(data.headers['content-length' ]);
console.log("Size of request : "+total_bytes);
var out = fs.createWriteStream(targetPath);
req.pipe(out);
});
req.on('aborted', function(chunk) {
console.log("Aborted download, 404 ?");
return 3;
});
req.on('data', function(chunk) {
// Update the received bytes
received_bytes += chunk.length;
showProgress(received_bytes, total_bytes);
});
req.on('end', function() {
console.log("File succesfully downloaded : "+received_bytes+" bytes.");
return 0;
});
}
И звоню по телефону:
function downloadAll(urls,path) {
var cur = Promise.resolve();
urls.forEach(function(url) {
cur = cur.then(function() {
return downloadFile(url,path);
});
});
return cur;
}
Но я не могу найти способ загрузить эти файлы асинхронно.
Я пытался сделать несколько асинхронных / ожиданий, но это не работает, я не понимаю, почему.