Я пытаюсь сделать вызов API, используя обещания. API разбит на страницы и поэтому, в зависимости от заголовков в этом первом вызове API, делает больше, чтобы получить остальные результаты, если это необходимо.
Вот что у меня так далеко:
const get = (url, pageNo) => {
var options = {
url: url,
headers: {
'Authorization': `Token token=${apiToken}`
},
json: true,
page: pageNo
};
return new Promise((resolve, reject) => {
request.get(options, (err, resp) => {
err ? reject(err) : resolve(resp);
})
});
};
Использование get()
для l oop и получение всех ответов:
const getAll = (plannerId, timestamp, range) => {
const plannerBookingsUrl = new URL(
`/api/planners/${plannerId}/bookings?since=${timestamp}&range=${range}`,
baseUrl
);
let response = get(plannerBookingsUrl, 1);
let bookings = [];
bookings.push(response);
response.then(results => {
let moreRequests = true;
let currentPage = 1;
const totalPages = parseInt(results.headers['x-total-pages']);
while (moreRequests) {
if (currentPage < totalPages) {
nextBatch = get(plannerBookingsUrl, currentPage + 1);
bookings.push(nextBatch);
currentPage++;
} else {
moreRequests = false;
}
}
});
return Promise.all(bookings);
};
Main()
, где я использую getAll(...)
:
const main = () => {
const response = getAll(
'11716',
'2020-02-27',
'7'
);
response.then(results => {
console.log(results);
.catch(error => console.log(error))
};
main();
Возвращает начальный обещание, но не остальные обещания.
У меня действительно проблема с чтением первого API, созданием остатка и возвратом их всех вместе для использования в моей основной функции.
Любая помощь будет высоко ценится!
Спасибо.