Как убрать вилкуПрисоединение Angular 5 - PullRequest
0 голосов
/ 25 сентября 2018

В моем компоненте я группирую набор операций, которые необходимо выполнить.Порядок, в котором они выполняются, не важен, но я хочу показать в конце, если он был успешным.Каждая операция приведет к вызову WebAPI.(Я действительно ценю, что было бы намного лучше, если бы операции были переданы за один вызов, однако это не вариант.

К сожалению, количество вызовов слишком много, и это эффективно DOSingAPI. Я пытался установить задержку канала, но, возможно, я не помещаю его в правильное место

const results: any[] = [];
this.bigArray.forEach(item =>
  results.push(
    this.aServiceWhichWillCallAPostMethod.doAnUpdate(item)
  )
);

forkJoin(results).subscribe(
  data => {
    Console.log('Yeah');
  },
  error => {
    Console.log('Oops');
  },
  () => {
  }
);

Я пытался добавить задержку здесь

this.aServiceWhichWillCallAPostMethod.doAnUpdate(item).pipe(delay(5000))

а здесь

forkJoin(results).subscribe

но без удачи

1 Ответ

0 голосов
/ 25 сентября 2018

Самый простой подход - это попытаться переписать ваш код, чтобы использовать mergeMap вместо forkJoin..mergeMap() имеет встроенную поддержку для ограничения параллелизма, при котором вызываются ваши наблюдаемые.

Rx.Observable.from(this.bigArray).mergeMap(
  item => this.aServiceWhichWillCallAPostMethod.doAnUpdate(item), */ project */
  undefined, /* resultselector */
  5 /* concurrency */
)
.subscribe();

Таким образом, вы будете обрабатывать максимум 5 элементов (не сохраняющих порядок, * 1007)* стратегия).

...