【发布时间】:2019-01-11 16:16:39
【问题描述】:
我想通过按钮 Async increment 触发异步操作,但通过单击按钮 cancel 取消它。
我的race 的rxjs 代码不起作用。
有什么方法可以实现吗?
【问题讨论】:
标签: rxjs cancellation
我想通过按钮 Async increment 触发异步操作,但通过单击按钮 cancel 取消它。
我的race 的rxjs 代码不起作用。
有什么方法可以实现吗?
【问题讨论】:
标签: rxjs cancellation
欢迎。
switchMap 如果在前一个请求完成之前有新请求到来,则取消前一个请求(完成前一个内部 observable)。
如果你想用一个新的流取消请求,你可以将你的流与“action one”合并,让 switchMap 来决定做什么。
merge(
increment$.pipe(mapTo(true)),
cancelIncrement$.pipe(mapTo(false))
).pipe(
switchMap((run) => new Promise(resolve => {
if(run)
setTimeout(() => resolve(2), 2000);
}))
).subscribe(console.log);