Как я могу вызвать функцию только после завершения всех запросов?

В настоящее время я генерирую несколько запросов, используя пакет npm request как это:

for (var i = 0; i < array.length; i++) {

    var options = {
        url: '...',
        headers: {
            '...'
        }
    };
    function callback(error, response, body) {

    };
    request(options, callback);

}


function toBeCalledWhenAllRequestsHaveFinished() {

}

Я просто не знаю как позвонить toBeCalledWhenAllRequestsHaveFinished() только после завершения всех запросов.

Что нужно сделать?

2 ответа

Решение

Я очень рекомендую использовать node-fetchпакет.

Ссылка на оригинальный постер


устанавливатьnode-fetchс помощью npm install node-fetch --save,

Сделайте возвращающую обещание выборку, которая разрешается в JSON

const fetch = require('node-fetch');
function fetchJSON(url) {
    // Add options
    var options = {
        headers: {
            '...'
        }
    };
    return fetch(url, options).then(response => response.json());
}

Создайте массив обещаний из массива URL

let urls = [url1, url2, url3, url4];
let promises = urls.map(url => fetchJSON(url));

Вызов toBeCalledWhenAllRequestsHaveFinished() когда все обещания будут выполнены.

Promise.all(promises).then(responses => toBeCalledWhenAllRequestsHaveFinished(responses));

Одна из лучших библиотек, которые я нашел. https://github.com/axios/axios

Следуйте этим инструкциям, его довольно просто интегрировать. http://codeheaven.io/how-to-use-axios-as-your-http-client/

Другие вопросы по тегам