DOM悬停时有规律的可观察到的发射

贝伦格-appvizer-

问题:寻找一种方法来获取常规事件发射(每200毫秒说一次),同时用户将DOM元素悬停在角度5上的RxJs上。

实际上,mouseover通过简单的JS使用angular或RxJs不会产生常规事件,并且行为与浏览器不同。使用debounce对事件发射没有帮助。

因此,我想改为使用mouseentermouseleave事件以及它们之间的计时器。但是我不知道如何从事件中启动和停止计时器。

类似于JQuery中的此解决方案,但带有可观察的东西。

一个(错误的)代码胜过1000个单词:

// RxJs syntax in typescript for angular
const enter = fromEvent(nativeElement, "mouseenter");
const leave = fromEvent(nativeElement, "mouseleave");

// Bad code, just an idea
enter.pipe(
  merge(interval(200 /* ms */)),
  takeUntil(leave)
).subscribe(event => console.log("hovering", event));

您是否知道是否可以在每次之后开始间隔发射mouseenter

对于库,我将RxJs 5与打字稿2.5上的Angular 5一起使用

马丁

我觉得你很亲密。只是代替merge您应该使用mergeMap,它interval只会在从发出后才订阅Observable enter然后,您可能还想使用repeat()在每次leave发射后都会重复该过程的方法(但是,这取决于使用/调用此代码的方式)。

enter.pipe(
  mergeMap(() => interval(200 /* ms */)),
  takeUntil(leave),
  repeat(),
).subscribe(event => console.log("hovering", event));

参见演示:https : //stackblitz.com/edit/rxjs6-demo-nrb7km?file=index.ts

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章