Сервер обрабатывает несколько запросов одновременно. Позвоните в службу, чтобы проверить статус каждого запроса. Сервис принимает список идентификаторов и присваивает статус каждому идентификатору следующим образом
{ id: number, status: number}; Status 1 is pending and 2 is complete
Требуется опросить все идентификаторы ожидающих запросов, пока все запросы не будут выполнены
У меня есть следующее рекурсивное решение, но для него нужно краткое решение RXJS
poll(requestIds: Array<number>): void {
if (requestIds.length > 0) {
callService(requestIds).subscribe((response) => {
const pending = response.reduce((result, request) => {
if (request.status === 1) { result.push(request.id); }
}, []);
setTimeout(() => poll(pending), 5000);
});
}
}
В вышеприведенном примере не упоминаются clearTimeout и список подписок, которые очищаются при остановке опроса. Я знаю, что это может быть достигнуто с помощью repeatWhen и takeWhile