JavaScript 事件处理程序不断调用 WebAssembly 函数

问题描述

最近我遇到了一个奇怪的错误,我不确定这是我的代码错误还是 JS/Rust Web Assembly 中的问题。

长话短说,我一直在尝试从 js 事件处理程序调用 Web 程序集异步函数,由于某种原因,该事件不断触发无限次。例如,对于 'keydown' 事件,一旦您按下某个键,该处理程序将被调用(您可以松开该键,但它仍然认为您正在按下它),直到您切换 Tab。

代码示例:
防锈功能

[wasm_bindgen]
pub async fn test() {
     await something();
}

js 代码

import the wasm...

document.addEventListener('keydown',keyDownHandler,false)

function keyDownHandler() {
    test();
}

你建议我做什么?我应该将其报告为 wasm 社区中的错误吗?也许你有办法给我?

解决方法

我终于根据您的意见解决了问题,非常感谢!

我做的是使用节流技术,你也可以尝试去抖动技术。

很好的article,比我更好地解释了这两种技术。