javascript - 主题上的 rxjs debounceTime

标签 javascript rxjs rxjs5

有一段代码是这样的:

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

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

这似乎行不通。而不是让我的事件被延迟 1 秒并且只获得最后发出的值,它们都通过,就好像 debounceTime 不存在一样。同样的行为会延迟发生,似乎不起作用。 似乎在可观察对象上按预期工作。 callback 是我正在使用的另一个库调用的回调。

不确定我是否遗漏了什么或者我是否做了一些不应该做的事情,在网上找不到太多关于这个的信息。

下面有一个 fiddle 和一个例子来演示

这是我正在运行的 rxjs 5.4.1 的 fiddle https://jsfiddle.net/theya222/2nhu1ka7/

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

谢谢

最佳答案

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

你要做的就是这个

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

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

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

如果回调是一个

callback called by another library

拿 查看使用 Observable 定义的 bindCallback 方法/函数。

关于javascript - 主题上的 rxjs debounceTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52345083/

相关文章:

rxjs - 如何将两个可观察数组合并为一个数组?

javascript - 从另一个 observable 内部的 observable 返回对象

javascript - 请求的资源上不存在 'Access-Control-Allow-Origin' header 。我不知道该怎么办

javascript - 如何捕获和解析从 Google Maps v3 API 返回的 JSON?

javascript - 使用 Observable 在控制台中打印数据 - Angular 2

javascript - 为什么这个控制台记录 0?

javascript - 从链接中删除 "clickability"( anchor 标记)

c# - 使用 Javascript/jQuery 在 silverlight 应用程序中显示 youtube 视频

javascript - RxJS:如何导入 Just

rxjs - 在RxJS 5.0中找不到 `combineLatest`