Функция преобразования преобразования для асинхронного использования в узле запросов jjs - PullRequest
0 голосов
/ 10 ноября 2019

Я использую функцию, которую нашел в Интернете:

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;
}

Но я не могу найти способ загрузить эти файлы асинхронно.

Я пытался сделать несколько асинхронных / ожиданий, но это не работает, я не понимаю, почему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...