#async-executor #async-task #async

wasm-rs-async-executor

WebAssembly的异步执行器

14个版本 (8个重大变更)

0.9.0 2021年2月21日
0.7.0 2021年2月18日

#517WebAssembly

Download history 568/week @ 2024-03-28 491/week @ 2024-04-04 712/week @ 2024-04-11 364/week @ 2024-04-18 507/week @ 2024-04-25 465/week @ 2024-05-02 603/week @ 2024-05-09 382/week @ 2024-05-16 491/week @ 2024-05-23 791/week @ 2024-05-30 501/week @ 2024-06-06 550/week @ 2024-06-13 391/week @ 2024-06-20 389/week @ 2024-06-27 185/week @ 2024-07-04 327/week @ 2024-07-11

每月1,385次下载
2 个crate中使用

MIT/Apache

35KB
687

WebAssembly的异步执行器

Crate API Chat

Rust生态系统中提供了许多异步任务执行器。然而,大多数(如果不是全部)都依赖于可能在WebAssembly部署时不可用或不理想的原始功能。

用法

在您的 Cargo.toml 中包含此依赖项

[dependencies]
wasm-rs-async-executor = "0.9.0"

wasm-rs-async-executor 预期在稳定版Rust 1.49.0和更高版本上工作。它 可能 也可以在早期版本上工作。这尚未经过测试。

支持的目标

目前,它仅在 wasm32-unknown-unknown 上进行了测试,并且除 cooperative 功能外,在 wasmtimewasmer 下通过测试,目标为 wasm32-wasi。进一步的测试尚待完成。

注意事项

请注意,这个库在安全性方面没有经过太多分析。有关这方面的某些警告可能永远无法完全解决。这是一个持续的开发项目,维护者了解潜在的陷阱。欢迎提交有关不安全或不稳定的任何有价值的报告(无论它们是否可以解决,或者只是简单地通过 unsafe 将其屏蔽,以便最终用户注意)。

常见问题解答

问题:为什么不直接使用 wasm-bindgen-futures

答案: (简短) 在许多情况下,wasm-bindgen-futures 是完全可以的

答案: (较长) wasm-rs-async-executor 揭示其功能的方式有一些细微的区别。其背后的核心思想是提供一定程度的 显式 控制。您需要显式地运行执行器,可以在未来上阻塞(再次,显式地——这赋予您有限的执行范围未来能力)。这确实带来了一些小的权衡。例如,如果您想从您的宿主环境中使用异步API,您不能简单地 await 在上面,因为执行器不会在告诉它之前让步给浏览器。然而,这通常可以通过简单地运行一个永久任务来解决,该任务循环将让步给浏览器。

最终,如果这种程度的控制对您的案例有益,那么或许这个执行器是受保证的。值得注意的是,目前 wasm-rs-async-executor 不支持 以任何方式在 WebAssembly 中进行多线程。如果标准库在构建时支持它,wasm-bindgen-futures 则支持。计划支持这一功能,但由于 Rust 的当前状态(现状),迄今为止这并不是一个高优先级的项目。

许可证

许可协议为以下之一:

依赖项

~0.6–3MB
~56K SLoC