RxJava 仅在一段时间没有消息时才发布

RxJava publishes only if there is no message for a while

我正在尝试找到一种在 RxJava 或 RxJs 中模拟以下代码的方法。

var timerRef;

run()
run()

function run(){
   if(timerRef){
      clearTimeout(timerRef);
   }
   timerRef = setTimeout(function(){alert("hello")}, 1000);
}

基本上,一旦我收到发出的消息,我想等待一段时间,确保没有消息到来,如果有,取消当前消息并重复等待新消息,如果没有通过它订阅方法。

我知道,当前消息不应该知道发送到管道的前一个或下一个消息,但我该如何实现呢?

听起来像 debounceTime 运算符是您的选择。在这里,我将 运行() 替换为文档点击事件

import { fromEvent } from 'rxjs';
import { debounceTime, map } from 'rxjs/operators';


const source = fromEvent(document, 'click')

source.pipe(
  debounceTime(3000)
)
.subscribe(console.log);

https://stackblitz.com/edit/typescript-fbyrsh