如何使用rxjs取消异步操作?

如何使用rxjs取消异步操作?,rxjs,cancellation,Rxjs,Cancellation,我想通过按钮async increment触发异步操作,但单击按钮cancel取消它 我的代码与rxjs的race不兼容 有什么办法可以实施吗 欢迎光临 switchMap如果在前一个请求完成之前出现新请求,则取消前一个请求(完成前一个内部可观察)。 若您想用一个新的流取消请求,您可以将您的流和“ActionOne”合并,并让switchMap决定要做什么 merge( increment$.pipe(mapTo(true)), cancelIncrement$.pipe(mapTo(f

我想通过按钮
async increment
触发异步操作,但单击按钮
cancel
取消它

我的代码与
rxjs
race
不兼容

有什么办法可以实施吗

欢迎光临

switchMap
如果在前一个请求完成之前出现新请求,则取消前一个请求(完成前一个内部可观察)。 若您想用一个新的流取消请求,您可以将您的流和“ActionOne”合并,并让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);