关于主题的rxjs debounceTime

时间:2018-09-15 13:21:17

标签: javascript rxjs rxjs5

有一段这样的代码:

const hoverQueue$ = new Rx.Subject()
    .debounceTime(1000)
    .subscribe(() => {
        console.log('subject')
});

const callback = () => {
    hoverQueue$.next(true)
}

似乎不起作用。而不是让我的事件延迟1秒并仅获取发出的最后一个值,它们都像debounceTime不存在一样通过了。相同的行为会延迟发生,似乎不起作用。 似乎可以在可观察对象上正常工作。 callback是我正在使用的另一个库调用的回调。

不确定我是否错过了某件事,或者我在做不应该做的事情,所以在网上找不到很多东西。

下面有个小提琴和一个例子来演示

这是rxjs 5.4.1的小提琴,即时通讯正在运行 https://jsfiddle.net/theya222/2nhu1ka7/

这是最新版本的rxjs的一个 https://jsfiddle.net/theya222/j1uLw80d/

谢谢

1 个答案:

答案 0 :(得分:1)

hoverQueue$是在Observable上执行subscribe的结果。因此,hoverQueue$Subcription而不是Observable,并且Subscription没有方法next

这是您要做的

const subj = new Rx.Subject();
const hoverQueue$ = subj.debounceTime(1000);

hoverQueue$.subscribe(() => {
        console.log('subject')
});

const callback = () => {
    subj.next(true)
}

如果回调是

  

由另一个库调用的回调

服用 看看用Observable定义的bindCallback方法/函数。