тайм-аут с собранными данными - PullRequest
0 голосов
/ 18 февраля 2020

Я вызываю 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)
)
...