Я вызываю API рекурсивно с помощью оператора расширения rx js, здесь я получаю данные с сервера, когда я получаю статус: ложь, прекращаю рекурсию и собираю все данные с помощью массива.
Здесь все работает нормально, но что, если я никогда не получу статус: false, так что это будет постоянно l oop http запросов, что не хорошо. Я хочу установить тайм-аут для HTTP-запроса, но это приведет к ошибке по истечении указанного времени, но мне нужны данные до истечения времени ожидания. любая идея?
пример ссылки:
let counterOfItemsFetched = 0;
function api() {
// console.log('counterOfItemsFetched', counterOfItemsFetched)
return counterOfItemsFetched < 1000 ? 100 : 1;
}
function apiAsynCall() {
return Observable.of(api()).delay(1000);
}
Observable.of(0).pipe(
expand(() => apiAsynCall().pipe(tap(itemsFetched => counterOfItemsFetched = counterOfItemsFetched + itemsFetched))),
filter(counter => counter > 0),
tap(() => console.log(counterOfItemsFetched)),
takeWhile(counter => counter === 100),
)
.subscribe(
null,
null,
() => console.log('counter value at the end', counterOfItemsFetched)
)