В случае, если вы не знаете общее количество предметов, вы можете сделать это, используя , разверните .
. Следующая статья дает хорошее введение в expand
и объяснение.о том, как использовать его для разбивки на страницы.
https://blog.angularindepth.com/rxjs-understanding-expand-a5f8b41a3602
Что-то в соответствии с приведенным ниже кодом будет работать в вашем случае, делая запросы для каждой страницы последовательно.
const limit = 1000;
let currentStart = 0;
let getUrl = (start, limit) => `http://site/api/myquery?start=${start}&limit=${limit}`;
httpClient.get(getUrl(currentStart, limit)).pipe(
expand(itemsArray => {
if (itemsArray.length) {
currentStart += limit;
return httpClient.get(getUrl(currentStart, limit));
}
return empty();
}),
reduce((acc, value) => [...acc, ...value]),
).subscribe(itemsArray => {
console.log(itemsArray);
})
Выполняется выход из окончательного массива элементов после разрешения всей серии запросов.