2 个版本
0.2.1 | 2021 年 5 月 11 日 |
---|---|
0.2.0 | 2021 年 5 月 11 日 |
在 WebAssembly 中排名 #1035
每月下载量 43 次
被 fut_rwlock 使用
28KB
540 代码行
js-function-promisify
此包提供了与 js_sys::Function
回调一起工作的实用工具,使其在异步 Rust 中的使用方式与 JavaScript 中相同。例如,在 JavaScript 中等待超时完成,可能会编写以下内容:
const promise = new Promise((resolve) => {
window.setTimeout(() => { resolve('Hello future!'); }, 500);
});
const result = await promise;
result === 'Hello future!'; // true
使用 js-function-promisify
实现相同功能:
let future = Callback::new(|| Ok("Hello future!".into()));
web_sys::window()
.unwrap()
.set_timeout_with_callback_and_timeout_and_arguments_0(
future.as_function().as_ref(),
500)
.unwrap();
let result = future.await; // result: Result<JsValue, JsValue>
assert_eq!(result.unwrap().as_string().unwrap(), "Hello future!"); // 🦀
使用方法
待办:记录使用 Callback 的常见方式。待办:记录注意事项,主要是 Closure::once 的使用和在第一次调用时进行分配。
贡献
欢迎贡献!如果您发现错误或有功能请求,请随时提交问题。此外,对公共 API 的反馈也备受欢迎,因为这是我发布的第一个库,我仍在了解 Rust 中的惯用法。
测试
使用 wasm-pack
是运行此存储库中测试的最简单方法。有关其文档,请参阅 此处 和 此处,例如,可以运行以下命令以运行库中的所有测试:
wasm-pack test --headless --firefox
依赖项
~1–1.7MB
~32K SLoC