我是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
运营商,但我不知道该怎么做。
答案 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))
)