Как правильно отправить несколько HTTP-запросов в NGRX Effects? - PullRequest
0 голосов
/ 12 ноября 2018

Я написал Эффект ниже для одного HTTP-запроса: (полезная нагрузка getRequestObj является объектом)

@Effect()
   indexDoc$ = this.actions$.pipe(
      ofType<IndexDocuments>(myActionTypes2.IndexDoc),
      mergeMapTo(this.store.select(getRequestObj).pipe(
         take(1)
      )),
      mergeMap((request: any) => this.myService.indexDoc(request).pipe(
         map((response: any[]) => new IndexSuccess(response)),
         catchError(error => of(new IndexFail(error)))
      ))
   );

Что мне нужно, так это заполнить эффект массивом и отправить HTTP-запрос для каждого элемента в массиве. Что я пробовал: (полезная нагрузка getRequestArray представляет собой массив объектов)

@Effect()
   indexDocs$ = this.actions$.pipe(
      ofType<indexDocs>(myActionTypes1.IndexDocs),
      concatMapTo(this.store.select(getRequestsArray)),
      concatMap((request: any[]) => {
         return zip(...request.map(item => {
            return this.myService.indexDocs(item).pipe(
               map(response => {
                  return this.store.dispatch(new IndexSuccess(response))
               }),
               catchError(error => {
                  return Observable.of(this.store.dispatch(new IndexFail(error)));
               })
            )
         }))
      })

Что происходит, все запросы возвращают ошибку 412 Precondition Failed. Как мне заставить это работать должным образом?

...