在Tauri协议处理器中调用async函数的推荐方法是什么?
在Tauri协议处理器中调用异步函数的方案
Tauri 1.x的临时实现方式
你通过futures::executor::block_on在协议处理器中调用异步函数的写法确实能生效,但这种方式并不推荐——block_on会阻塞当前线程,在Tokio runtime环境下可能引发死锁风险,破坏异步调度的合理性。
你的简化实现代码如下:
#[tokio::main] async fn main() { tauri::Builder::default() .register_uri_scheme_protocol("myprot", move |_app, req| { let handle = tokio::runtime::Handle::current(); let _guard = handle.enter(); futures::executor::block_on(async move { handle_protocol_myprot(&req).await }) }) .run(tauri::generate_context!()) .expect("error while running tauri application"); }
官方推荐的异步方案(Tauri 2.0)
Tauri 2.0(测试版)新增了register_asynchronous_uri_scheme_protocol方法,专门支持在协议处理器内部直接进行异步调用,无需手动阻塞线程,这是官方针对异步协议场景提供的标准解决方案。
内容的提问来源于stack exchange,提问作者happybeing
相关产品推荐
相关产品推荐

