有没有一种方法可以识别用户何时停止移动鼠标?我无法弄清楚如何告诉RxJs用户是否停了2秒。
当我这样使用它时:
fromEvent(document, 'mousemove').pipe(
debounceTime(2000)
).subscribe(() => console.log("Stoped"));
即使我将光标移出屏幕,它也会触发。
答案 0 :(得分:2)
视情况而定,但是timeout或timeoutWith可能适合您。
在没有"stop"
事件超过1s的情况下,此示例将每次发出mousemove
:
const { of, defer, concat, fromEvent } = rxjs;
const { mapTo, timeoutWith, skipUntil } = rxjs.operators;
const move$ = fromEvent(document, 'mousemove').pipe(mapTo('move'));
const moveAndStop$ = move$.pipe(
timeoutWith(
1000,
defer(() => concat(
of('stop'),
moveAndStop$.pipe(skipUntil(move$))
))
)
);
moveAndStop$
.subscribe(e => console.log(e));
<script src="https://unpkg.com/rxjs@6.3.2/bundles/rxjs.umd.min.js"></script>
<div id="app">Move your mouse over me</div>