Использование Angular 6 с RxJS 5, ngx-restangular и ngrx store.
Я имею дело с API, который очень легко ломается и может легко занять 5+ секунд, чтобы ответить, или часто отвечает 500.
Мне нужно отправить несколько (n) запросов, я использую forkJoin, но я хотел бы начать заполнять пользовательский интерфейс, как только будет возвращено что-либо, и не нужно ждать, пока всевернуться сразу (а также в случае сбоя одного из этих вызовов, остальные будут продолжены, чтобы я мог хотя бы отобразить эти данные).Я также пробовал комбинировать с ЛестЛейтс, но он также ждет, когда все наблюдаемые что-то испустят.
Я думаю, что-то не так с тем, как я настроил его в хранилище ngrx, и мог бы воспользоваться некоторыми советами о том, как выполнитьthis.
Скажем, у меня в службах есть это, чтобы принять массив временных меток:
getForTimestamps(timestamps: string[] = []) {
const observableBatch = [];
timestamps.forEach((timestamp) => {
observableBatch.push(this.restangular.all('myapi').customGET('', {timestamp})
.pipe(
catchError((err) => observableThrowError(err) ),
map((r) => {
return {[timestamp]: r}
})));
})
return observableBatch.length > 0 ? observableForkJoin(observableBatch) : observableOf([]);
}
Однако, это ничего не излучает, пока все эти наблюдаемые не будут завершены.Должен ли я вытащить наблюдаемый массив и вместо этого разобраться с массивом в результате?
Я прошу прощения, если об этом уже спрашивали, я не мог понять, что искать.Большое спасибо заранее!