4

我是 RxJS 的新手。在我的应用程序中,我需要独立取消延迟操作。这是一个工作示例(延迟为 3 秒)。但是当我选择删除多个项目并取消其中一项时,然后一次全部取消。

史诗代码:

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

我想我需要传递一个idtotakeUntil运算符,但我不知道该怎么做。

4

1 回答 1

4

如果我正确理解了运算符,一旦参数发出它的第一项takeUntil,它就会停止从调用它的位置发出新项。考虑到这一点,您可以执行以下操作:ObservableObservable

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))
  )
于 2017-01-31T21:04:34.057 回答