redux-observable中的独立链取消?

时间:2017-01-31 20:22:14

标签: javascript redux rxjs react-redux redux-observable

我是RxJS的新手。在我的应用程序中,我需要独立取消延期操作。 Here's一个工作示例(延迟为3秒)。但是当我选择删除多个项目并取消其中一个项目时,则立即取消所有项目。

史诗代码:

const itemsEpic = action$ =>
  action$.ofType('WILL_DELETE')
    .flatMap(action =>
      Observable.of({type: 'DELETE', id: action.id})
        .delay(3000)
        .takeUntil(action$.ofType('UNDO_DELETE'))
  )

我想我需要将id传递给takeUntil运营商,但我不知道该怎么做。

1 个答案:

答案 0 :(得分:3)

如果我正确理解takeUntil运算符,则一旦参数Observable发出第一项,它就会停止从调用它的Observable中发出新项目。考虑到这一点,你可以做这样的事情:

const itemsEpic = action$ => action$.ofType('WILL_DELETE')
  .flatMap(action => Observable.of({ type: 'DELETE', id: action.id })
    .delay(3000)
    .takeUntil(action$.ofType('UNDO_DELETE').filter(({id}) => id === action.id))
  )