Запустить действие после итерации наблюдаемого - PullRequest
0 голосов
/ 03 июля 2018

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

const removeUsersEpic = (action$, store) =>
  action$
    .ofType(REMOVE_USERS)
    .mergeMap(action =>
      Rx.Observable.from(action.payload).mergeMap(user => {
        return Rx.Observable.authorizedAjax({
          headers: { 'Content-Type': 'application/form-data' },
          method: 'DELETE',
          url: `${consoleBaseUrl}/api/v1/users/${user}`,
          body: {}
        })
          .mergeMap(() =>
            Rx.Observable.of(
              setUserDeleteCount(store.getState().components.userListComponentData.deletedUserCount + 1),
              getUserCount()
            )
          )
          .catch(error => {
            console.log(error)
            return Rx.Observable.of(
              setUserDeleteExceptionCount(
                store.getState().components.userListComponentData.deleteUserExceptionCount + 1
              ),
              getUserCount()
            )
          })
      }).map(()=>{return setDeleteOperationStatus(true)})
    )
    .catch(error => {
      console.log(error)
      return Rx.Observable.empty()
    })

В этом примере я пытаюсь вызвать setDeleteOperationStatus в конце. action.payload - это не что иное, как список идентификаторов пользователей, которые нужно удалить. Я перебираю идентификаторы и удаляю их один за другим. В конце цикла я просто хочу выполнить какое-то действие. Я пытался использовать .map, mergemap, но это не сработало.

1 Ответ

0 голосов
/ 03 июля 2018

похоже, что они холодные наблюдаемые (у них есть конец) если это так, тогда вы можете использовать метод "onCompleted" для ".subscribe ()"

.subscribe (onNext (), onError (), onCompleted ())

если это горячая наблюдаемая (например, что-то вроде источника событий) вам придется использовать буфер, например bufferCount () или bufferTime (), основываясь на имеющейся у вас информации.

извините, в двух словах трудно объяснить холодные / горячие наблюдаемые значения

...