Мой эффект вызывается только один раз, когда я отправляю кратные - PullRequest
0 голосов
/ 30 мая 2019

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

      drones.forEach((drone) => {
        console.log('dispatch', drone.id)
        this.store$.dispatch(new UsedDronesStoreActions.OpenUsedDroneUpdatePositionChannelRequest({ droneId: drone.id, projectId : environment.projectId }));
      });

Мой эффект

  @Effect()
  startStatusUpdate$ = this.actions$.pipe(
    ofType<featureActions.OpenUsedDroneUpdateStatusChannelRequest>(featureActions.ActionTypes.OpenUsedDroneUpdateStatusChannelRequest),
    concatMap((action) =>
      this.droneDataService.openUsedDroneUpdateStatusChannel(action.payload).pipe(
        map(result => { console.log('there', action.payload.droneId);}),
        catchError((error: HttpErrorResponse) => { }),
      )
    )
  );

вызывается только один раз

dispatch id1
dispatch id2
dispatch id3

there id1
===> no more

Я попытался выполнить concatMap, и на стенде switchMap don7t делать (concat показывает только первое значение, переключать последнее).

switchMap делает только последнее, потому что он отписался от предыдущего concatMap, не будет подписываться на другое, потому чтопервый не завершен ...

Есть ли кто-нибудь, кто подписывается на всех и смотрит их по отдельности?

1 Ответ

0 голосов
/ 31 мая 2019

Вы не получаете никаких ошибок в консоли?Эффект всегда должен возвращать Action (если не используется dispatch: false).

Строка

  map(result => { console.log('there', action.payload.droneId);}),

Не возвращает действие и вызывает уничтожение эффекта.

...