#reactor #web-worker #yew #send-receive #action #queuing

ratio-reactor

在 Yew WASM 应用中设置 WebWorkers 作为不同策略的排队作业店反应器

6 个版本 (3 个重大更新)

0.4.0 2024年5月24日
0.3.0 2024年1月8日
0.2.1 2024年1月8日
0.2.0 2023年12月26日
0.1.1 2023年12月23日

WebAssembly 中排名第 151

Download history 131/week @ 2024-05-22 8/week @ 2024-05-29 1/week @ 2024-06-05 24/week @ 2024-07-03 6/week @ 2024-07-10

每月下载量 344

MIT/Apache

34KB
730

Ratio Reactor

为使用基于 Yew 和官方 yew-agent crate 的应用程序提供排队作业店反应器。包括不同排队策略的反应器,因为等待和数据竞争都很糟糕!

什么是反应器?

反应器做什么?反应器是一个双向 WebWorker 实现,可以发送和接收消息,并在浏览器的主线程之外执行操作。或者用 yew-agent 的话说

一种可以在单一桥接上发送多个输入并接收多个输出的代理。

这意味着你也可以依赖此类工作者的输出在你的前端!

为什么要排队策略?

典型的流程是将你的 Yew 应用程序编写为通常那样,但在 WebWorker 中实现某些繁重的任务。你可能只想执行一次“计算事物”,然后更新你的状态,但当你连续发送许多此类消息时会发生什么?哪个调用或结果才是“老大”?应该为每个调用更新 UI 吗?

而且,如果你想知道工作者的状态并在你的应用程序中显示它怎么办?工作者忙吗?有多忙?许多工作在等待,还是只有一个?你还能对工作分类吗?

排队策略

目前支持以下策略

  • FIFO 队列
    • 所有工作按到达顺序执行
  • 跳过等待
    • 在执行时到达的新工作将替换任何等待的工作
  • 立即切换
    • 在新到达时退出当前工作并开始处理它

分类键

由于 FIFO 和跳过队列都支持“分类键”,因此可以为不同的工作和优先级应用这些策略。代码执行本身不会真正并行,但反应器将记录每个唯一键的策略,以便所有带有特定键的工作都独立地遵循建议的策略。

示例!

示例 目录中包含几个基本的示例,展示了不同反应器策略的上下文。

依赖项

~12–17MB
~294K SLoC