BenderLib
@BenderLib
JS

Как в node.js у http.get() отключить асинхронность?

Суть следующая. Есть файл с большим количеством ссылок на различные файлы. Эти файлы нужно скачать.
Пробую делать следующим образом:
var http = require('http');
var fs = require('fs');


function readFile(nameFile) {
    fs.readFile(nameFile, 'utf8', function(err, contents) {
        if (!err) {
            readLine(contents.split('\n'));
        } else {
            console.log('Ошибка', err);
        }
    });
}

function readLine(array) {
    array.forEach(function(uri) {
        var img_name = decodeURIComponent(uri.split('/').slice(-1))
        var file = fs.createWriteStream(img_name);
        var request = http.get(uri, function (response) {
            console.log(img_name, ' OK')
            response.pipe(file);
        });
    });
}

readFile('test.txt');


Если в файле ссылок не очень много то данный скрипт справляется, но если там ссылкок более 5тыс, то скрипт падает. Хотелось бы сделать его синхронным, как только файл скачался, только тогда переходить к следующей ссылке. Все эксперименты потерпели неудачу. Подскажите пожалуйста, может есть какой нибудь способ делать запросы синхронно.
  • Вопрос задан
  • 736 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы