本文将介绍一个使用 Rust wasm-bindgen的 async/await 特性来实现异步编程的示例,示例中使用了 wasm-bindgen 将 Rust 代码编译成了 WebAssembly 模块,并在 Node.js 中运行。以下是示例的具体步骤:
1. 在 Cargo.toml 中添加必要的依赖,包括 js-sys、spin_sleep、wasm-bindgen、wasm-bindgen-futures、futures-core 和 futures-channel-preview:
2. 在 lib.rs 中添加 test() 和 test2() 两个异步函数,其中 test() 函数启动一个新的异步任务并返回其结果,testAsync() 函数是实际执行的异步任务,而 test2() 函数直接返回一个 JsValue:
3. 运行 wasm-pack build --target nodejs --dev 命令编译 WebAssembly 模块。
4. 在 main.js 中引入编译好的模块,并分别调用 test() 和 test2() 函数:
5. 运行 node main.js 命令执行 JavaScript 代码。
6. 运行结果会先输出 res 2 2,然后等待一段时间后输出 res 1 1。这是因为 test() 函数中启动了一个新的异步任务 testAsync(),该任务会先执行,输出从 0
完整demo代码 github: https://github.com/mengyou658/rust-wasm-async gitess: https://gitee.com/mengyou/rust-wasm-async
领取专属 10元无门槛券
私享最新 技术干货