Использование rxjs и ngrx store для работы с хрупким API - PullRequest
0 голосов
/ 18 сентября 2018

Использование 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([]);
}

Однако, это ничего не излучает, пока все эти наблюдаемые не будут завершены.Должен ли я вытащить наблюдаемый массив и вместо этого разобраться с массивом в результате?

Я прошу прощения, если об этом уже спрашивали, я не мог понять, что искать.Большое спасибо заранее!

...