2

在我的 javascript 中,在调用 wasm 之前,我定义了一个函数 jalert,稍后我想使用 wasm 从 Rust 调用它。我在 wasm-bindgen 的文档中找不到如何调用我之前在 javascript 中定义的任意函数,如下所示。我得到了像 alert 和 console.log 这样的函数,因为它们已经是 javascript 的一部分,但是我不能让这个函数 jalert 工作。我在浏览器中收到一个错误,说它没有定义。有了警报功能,它不会抱怨。

    function jalert(sometext) {
        alert(sometext);
    }
    
    jalert("I am Claudio");
    
    // This works from Javascript

在锈文件中lib.rs

    #[wasm_bindgen]
    extern "C" {
        fn alert(s: &str);
        fn jalert(s: &str);
    }
    
    #[wasm_bindgen]
    pub fn run_alert(item: &str) {
        jalert(&format!("This is WASM calling javascript function jalert and {}", item));
        alert(&format!("This is WASM and {}", item));
    }
    
// The alert() code works fine. The jalert() call in run_alert() gives me a browser error that jalert is not defined

4

1 回答 1

0

我会说您需要将#wasm_bindgen 添加到您的方法声明中:

#[wasm_bindgen]
extern "C" {
    #[wasm_bindgen(method, js_name = alert]
    fn alert(s: &str);
    #[wasm_bindgen(method, js_name = jalert]
    fn jalert(s: &str);
}
于 2020-07-16T14:19:48.843 回答