En termes simples, il a trois caractéristiques :
Ce que cela signifie pour JavaScript, c'est que de nombreux objets peuvent être écrits comme des machines à états finis.
Par exemple, il y a un élément de menu sur la page Web. Lorsque la souris survole, le menu est affiché ; lorsque la souris est éloignée, le menu est masqué. Si une machine à états finis est utilisée pour le décrire, ce menu n'a que deux états (afficher et masquer), et la souris provoquera une transition d'état.
Le code peut s'écrire ainsi :
Copier le code
Le code est le suivant :var fsm = StateMachine.create();
var fsm = StateMachine.create({
* fsm.current : Renvoie l'état actuel .
En même temps, il permet également de spécifier deux fonctions de rappel pour chaque état, en prenant l'état vert comme exemple :
En supposant que l'événement warn change l'état du vert au jaune, l'ordre d'apparition des quatre types de fonctions de rappel ci-dessus est le suivant : onbeforewarn → onleavegreen → onenterjaune → onafterwarn.
En plus de spécifier des fonctions de rappel distinctes pour chaque événement et statut, vous pouvez également spécifier une fonction de rappel commune pour tous les événements et statuts.
S'il y a une opération asynchrone dans la fonction de rappel d'événement (telle que la communication Ajax avec le serveur), nous souhaiterons peut-être attendre la fin de l'opération asynchrone avant de changer d'état. Cela nécessite l'utilisation de la méthode de transition.
Dans la fonction de rappel du code ci-dessus, il existe une opération asynchrone (light.fadeOut). Si vous ne souhaitez pas que l'état change immédiatement, vous devez laisser la fonction de rappel renvoyer un objet StateMachine.ASYNC, indiquant que l'état ne changera pas temporairement ; attendez que l'opération asynchrone soit terminée, puis appelez la méthode de transition pour provoquer le changement d'état ; état à changer.
Javascript Finite State Machine vous permet également de spécifier une fonction de gestion des erreurs, qui est automatiquement déclenchée lorsqu'un événement impossible à produire dans l'état actuel se produit.
Par exemple, si l'état actuel est vert, théoriquement, seul un événement d'avertissement peut se produire à ce moment-là. Si un événement d'arrêt se produit à ce moment, la fonction de gestion des erreurs ci-dessus sera déclenchée.