如何停止去抖动的Rxjs Observable?

演员

我创建了一个可观察对象,它将在最后一次更改后3秒触发,并调用publishChange该服务的。它可以工作,但是我想创建一个doImmediateChange函数,该函数publishChange立即调用并停止可观察到的去抖动。那怎么可能?

我的组件:

class MyComponent {
    private updateSubject = new Subject<string>();

    ngOnInit() {
        this.updateSubject.pipe(
            debounceTime(3000),
            distinctUntilChanged()
        ).subscribe(val => {
            this.srv.publishChange(val);
        });
    }

    doChange(val: string) {
        this.updateSubject.next(val);
    }

    doImmediateChange(val: string) {

        // Stop the current updateSubject if debounce is in progress and call publish immediately
        // ??
        this.srv.publishChange(val);

    }

}
理查德·邓恩

使用竞赛运算符

完成的第一个可观察变量将成为唯一的可观察变量,因此此递归函数将在发出一次后完成take(1),然后重新订阅() => this.raceRecursive()

private timed$ = new Subject<string>();
private event$ = new Subject<string>();

ngOnInit() {
  this.raceRecursive()
}

raceRecursive() {
  race(
    this.timed$.pipe(debounceTime(1000)),
    this.event$
  )
    .pipe(take(1)) // force it to complete
    .subscribe(
      val => console.log(val), // srv call here
      err => console.error(err),
      () => this.raceRecursive() // reset it once complete
    )
}

doChange(val: string) {
  this.timed$.next(val)
}

doImmediateChange(val: string) {
  this.event$.next(val)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RxJS.Observable去抖动有什么作用?

来自分类Dev

RxJs Observable的Observable Zip数组

来自分类Dev

无法导入Observable rxjs / Observable

来自分类Dev

根据另一个 observable 的输出对一个 Observable 进行去抖动

来自分类Dev

如何停止Observable.Timer()?

来自分类Dev

RXJS如何将Observable <T []>转换为Observable <T>

来自分类常见问题

Rxjs:Observable.combineLatest与Observable.forkJoin

来自分类Dev

来自Observable输出的RxJS Observable结果

来自分类Dev

Rxjs: create observable from value 或 observable 的简写

来自分类Dev

使用 Rxjs 过滤 Observable

来自分类Dev

Rxjs 结合 Observable 的数组

来自分类Dev

理解 RxJS 去抖动语义

来自分类Dev

如何在RxJS中完成Observable

来自分类Dev

如何从节点请求创建 RxJs Observable

来自分类Dev

如何从Observable <List <Type >>创建Observable <Type>

来自分类Dev

如何用新的observable替换http observable?

来自分类Dev

RxJS Observable.fromEvent数据

来自分类Dev

使用RxJS Observable流JSON

来自分类Dev

RxJS Observable.fromEvent数据

来自分类Dev

rxjs 嵌套 observable 并组合结果

来自分类Dev

RxJS Observable:重试失败的 Promise

来自分类Dev

如何延迟重设Observable?

来自分类Dev

如何使用Observable Java

来自分类Dev

如何编写 Observable

来自分类Dev

RXJS 去抖动和修改 BehaviourSubject

来自分类Dev

RxJS-Rx.Observable.prototype.toMap运算符去哪了?

来自分类Dev

RxJS-Rx.Observable.prototype.toMap运算符去哪了?

来自分类Dev

使用RxJS将Observable [A列表]转换为Observable [B列表]

来自分类Dev

使用RxJS将Observable [A列表]转换为Observable [B列表]