RxJs5在没有移动的情况下发射

时间:2017-11-01 17:11:28

标签: javascript rxjs rxjs5

我有一个滑块。我想根据百分比改变颜色。除此之外,如果用户不移动鼠标N秒,我想显示工具提示。 我可以考虑可能的解决方案,但这似乎不是正确的方法,有没有更好的方法来完成这项任务?

Rx.Observable.fromEvent(container,"mousemove")
.debounceTime(30)
.switchMap(
   () => Rx.Observable.race(
       Rx.Observable.fromEvent(container,"mousemove").map(
           (v) => "Continue changing color"
       ),
       Rx.Observable.interval(2000).map(
           (v) => "Show tooltip!"
       )
   )
)
.subscribe(
  v => console.log(v)
) 

谢谢。

1 个答案:

答案 0 :(得分:3)

从事件源开始,然后将序列切换到在指定时间后发出的计时器。当事件源发出时,它将创建另一个计时器,延迟它之后发生的任何事情。

fromEvent(container,"mousemove")
  .switchMap(() => timer(IDLE_TIME))
  .do(() => { /* show tooltip */ })
  .subscribe()