2

在 Angular 4 项目中,我有一个函数(我们称之为它reload()),它可以随时被其他函数(我们称之为A()and B())调用。我想消除从orreload()的最后一次调用传递的直到 X 时间(即毫秒)的执行。我正在查看and函数,但我不明白它们是否真的可以帮助我。A()B()Rx.Observable.debounceRx.Observable.debounceTime

一个例子:

time 0ms: A() gets executed and it calls reload()
time 200ms: B() calls executed and it calls reload()
Since X is set to 500ms, reload() should be called only once and after 500ms.
4

1 回答 1

7

您可以使用Subjectwith debounceTime。因此,同时具有两个功能A并向B主题发送一个值。然后对主题流进行去抖动,以便在 x 时间过去后仅发出值。

// component.ts
subject$ = new Subject();
stream$;

constructor(){
    this.stream$ = this.subject$.debounceTime(1000);
}

A(){
    this.subject$.next('some value');
}
B(){
    this.subject$.next('some value');
}

ngOnInit(){
    this.stream$.subscribe(res => {
        this.reload();
    });
}

这是一个演示这个的堆栈闪电战。

于 2018-01-01T04:51:10.047 回答