エージェント
エージェントは、タスクをWebワーカーにオフロードする方法です。
エージェントを並行して実行するために、Yewはweb-workersを使用します。
ライフサイクル
エージェントの種類
リーチ
-
パブリック - パブリックエージェントは、任意の時点で最大1つのインスタンスが存在します。ブリッジは、Webワーカーですでに生成されたエージェントを生成または接続します。このエージェントに接続されたブリッジがない場合、エージェントは消滅します。
-
プライベート - 新しいブリッジごとにWebワーカーに新しいエージェントを生成します。これは、ブラウザーと通信する共有されているが独立した動作をコンポーネントから移動するのに適しています。接続されたブリッジがドロップされると、エージェントは消滅します。
-
グローバル(WIP)
エージェントとコンポーネント間の通信
ブリッジ
ブリッジを使用すると、エージェントとコンポーネント間で双方向の通信が可能になります。また、ブリッジを使用すると、エージェント同士が通信できるようになります。
関数コンポーネントでブリッジを作成するために、use_bridge
フックも提供されています。
ディスパッチャ
ディスパッチャを使用すると、コンポーネントとエージェントの間で一方向の通信が可能になります。ディスパッチャを使用すると、コンポーネントからエージェントにメッセージを送信できます。
オーバーヘッド
エージェントはWebワーカー(つまり、プライベートとパブリック)を使用します。送信および受信するメッセージにはシリアル化オーバーヘッドが発生します。エージェントはbincodeを使用して他のスレッドと通信するため、コストは単に関数を呼び出すよりも大幅に高くなります。
さらに読む
- web_worker_fibの例は、コンポーネントがエージェントとの間でメッセージを送受信する方法を示しています。