gpt4 book ai didi

javascript - 如何使用 rxjs 过滤按键?

转载 作者:数据小太阳 更新时间:2023-10-29 04:23:29 25 4
gpt4 key购买 nike

我需要在不重复的情况下获得干净的 keydown/keyup 事件。当您按下一个键时,会发生 keydown 事件,当您释放时 - keyup。没有困惑的重复按键。

代码如下:

var keyDowns = rx.Observable.fromEvent(document, 'keydown');
var keyUps = rx.Observable.fromEvent(document, 'keyup');
var keyActions = rx.Observable.merge(keyDowns, keyUps);

keyActions.subscribe(function(e) {
console.log e
});

如何调整它来完成这项工作?

最佳答案

虽然它很好用,但 icio 的状态跟踪解决方案是 ** 非常 ** 单一。适当的 RxJs 5解决方案是:

var keyDowns = Rx.Observable.fromEvent(document, "keydown")
var keyUps = Rx.Observable.fromEvent(document, "keyup")

var keyPresses = keyDowns
.merge(keyUps)
.groupBy(e => e.keyCode)
.map(group => group.distinctUntilChanged(null, e => e.type))
.mergeAll()

解释:

  • 合并所有键的所有 keydown 和 keyup 事件。
  • 按键 (keyCode) 将它们分组。它创建一个可观察对象的可观察对象,其中每个子可观察对象将包含一个键的所有事件。
  • 将每个子可观察对象映射到其自身的 distinctUntilChanged 版本。按事件类型执行此操作,以便跳过额外的按键。
  • 将所有键合并回一个 observable

关于javascript - 如何使用 rxjs 过滤按键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31206734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com