Угловые Rxjs получают ошибки из массива наблюдаемых через forkJoin после выполнения - PullRequest
1 голос
/ 01 мая 2019

Я построил массив наблюдаемых через forloop. Затем я использую forkjoin, чтобы выполнить их по порядку и обновить представление после того, как все они завершатся с помощью .add ().

    let observables: Observable<any>[] = [];
    this.selection.selected.forEach((person) => {
      // API CALL.
      observables.push(this._personService.deletePerson(person.ID));
    });

    forkJoin(observables)
      .pipe(take(1))
      .subscribe(dataArray => {})
      .add(() => {
        this._snackbars.openSnackbarShowResults("Mass Delete Completed.");
        this.refresh();
    });

Мне нужен способ, чтобы отслеживать, какие наблюдаемые сбой и вернул ошибку. Я использую эти ошибки, чтобы сообщить пользователю, какие объекты не могут быть удалены, а какие - нет. Есть ли простой способ узнать, какие наблюдаемые имели ошибку после завершения forkJoin?

По существу список неудачных и завершенных наблюдаемых из forkJoin.

1 Ответ

1 голос
/ 01 мая 2019

Вы можете поместить блок catch в наблюдаемое, которое вы помещаете в массив. Таким образом, вы можете решить, каким должен быть выход, если он потерпит неудачу. Попробуйте приведенный ниже фрагмент кода и проверьте журнал консоли:

let observables: Observable<any>[] = [];
this.selection.selected.forEach((person) => {
  // API CALL.
  observables.push(this._personService.deletePerson(person.ID).catch(() => Observable.of(false)));
});

forkJoin(observables)
  .pipe(take(1))
  .subscribe(dataArray => { console.log(JSON.stringify(dataArray)); })
  .add(() => {
    this._snackbars.openSnackbarShowResults("Mass Delete Completed.");
    this.refresh();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...