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

JavaScript event handler continuously calls WebAssembly function

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

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

代码示例:
生锈函数:

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

js代码:

import the wasm...

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

function keyDownHandler() {
    test();
}

你建议我做什么?我应该将其报告为 wasm 社区中的错误吗?也许你有适合我的解决方案?

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

我做的是节流技术,你也可以试试debouncing技术

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