代理
代理是一种将任务卸载到 Web 工作线程的方法。
为了让代理并发运行,Yew 使用 Web 工作线程。
生命周期
代理类型
范围
-
公共 - 任何给定时间最多存在一个公共代理实例。桥梁将在 Web 工作程序中生成或连接到已生成的代理。当没有桥梁连接到此代理时,该代理将消失。
-
私有 - 为每个新桥梁在 Web 工作程序中生成一个新代理。这适用于将与浏览器通信的共享但独立的行为移出组件。当连接的桥梁断开时,代理将消失。
-
全局 (WIP)
代理和组件之间的通信
桥梁
桥梁允许代理和组件之间进行双向通信。桥梁还允许代理相互通信。
还提供了 use_bridge
挂钩,以便在函数组件中创建桥梁。
调度程序
调度程序允许组件和代理之间进行单向通信。调度程序允许组件向代理发送消息。
开销
代理使用 Web 工作程序(即私有和公共)。它们会对发送和接收的消息产生序列化开销。代理使用 bincode 与其他线程通信,因此成本远高于仅调用函数。
进一步阅读
- web_worker_fib 示例展示了组件如何向代理发送消息并从代理接收消息。