Как я могу вызвать функцию только после завершения всех запросов?
В настоящее время я генерирую несколько запросов, используя пакет 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/