RxJava публикует, только если какое-то время нет сообщений - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь найти способ смоделировать код ниже в RxJava или RxJs.

var timerRef;

run()
run()

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

По сути, как только я получил испущенное сообщение, я хочу подождать некоторое время и убедиться, что нетприходящее сообщение, если оно есть, отменить текущее и повторить ожидание нового, если не передать его методу подписки.

Я знаю, текущее сообщение не должно знать о предыдущем или следующем, отправленном наконвейер, но как мне этого добиться?

1 Ответ

1 голос
/ 25 сентября 2019

Похоже, debounceTime оператор ваш выбор.Здесь я заменяю run () на событие щелчка документа

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

...