Йо-йо! Однажды мне понадобилось последовательно загрузить несколько файлов в node js. Я написал код и решил поделиться им. Код состоит из двух функций. Первая функция просто загружает один файл, а вторая, используя первую в цикле, делает последовательные запросы
const http = require('https'); const fs = require('fs'); // Загрузка одного файла const asyncDownload = (url, fileName, dir) => new Promise((resolve, reject)=>{ const dest = `${dir}/files/${fileName}`; const file = fs.createWriteStream(dest); http.get(url, function(response) { response.pipe(file); file.on('finish', function() { file.close(resolve); }); }).on('error', function(err) { fs.unlink(dest, () => reject(err.message)); }); }); // Последовательная загрузка файлов const downloadFiles = async (arrUrl, dir) => { try { for(const url of arrUrl){ const fileName = url.split('.').pop(); await asyncDownload(url, fileName, dir); console.log('\x1b[42m', `Download file ${fileName} is finished`) } } catch (e) { console.error(e) } }