ホームページ > 記事 > ウェブフロントエンド > JavaScriptと有限状態マシンの詳しい解説_基礎知識
簡単に言えば、3 つの特徴があります:
JavaScript にとってこれが意味するのは、多くのオブジェクトを有限状態マシンとして記述できるということです。
たとえば、Web ページにメニュー要素があります。マウスをホバリングするとメニューが表示され、マウスを離すとメニューが非表示になります。有限状態マシンを使用して説明すると、このメニューには 2 つの状態 (表示と非表示) しかなく、マウスによって状態遷移が発生します。
コードは次のように記述できます:
このライブラリは、グローバル オブジェクト StateMachine を提供します。このオブジェクトの create メソッドを使用して、有限状態マシンのインスタンスを生成できます。
コードをコピー
同時に、緑色の状態を例として、各状態に 2 つのコールバック関数を指定することもできます。
warn イベントにより状態が緑から黄色に変化すると仮定すると、上記 4 種類のコールバック関数の発生順序は、onbeforewarn → onleavegreen → onenter yellow → onafterwarn となります。
イベントとステータスごとに個別のコールバック関数を指定するだけでなく、すべてのイベントとステータスに共通のコールバック関数を指定することもできます。
イベント コールバック関数に非同期操作 (サーバーとの Ajax 通信など) がある場合、状態が変化する前に非同期操作が終了するまで待機する必要がある場合があります。これには、transition メソッドを使用する必要があります。
上記のコードのコールバック関数には、非同期操作 (light.fadeOut) があります。状態をすぐに変更したくない場合は、コールバック関数に StateMachine.ASYNC オブジェクトを返させ、非同期操作が完了するまで状態が一時的に変更されないことを示してから、transition メソッドを呼び出して、変化する状態。
Javascript Finite State Machine では、現在の状態では発生し得ないイベントが発生したときに自動的にトリガーされるエラー処理関数を指定することもできます。
たとえば、現在のステータスが緑色の場合、理論的には現時点では警告イベントのみが発生する可能性があります。このときに停止イベントが発生すると、上記のエラー処理関数がトリガーされます。