간단히 말하면 3가지 특징이 있습니다.
JavaScript의 의미는 많은 객체를 유한 상태 기계로 작성할 수 있다는 것입니다.
예를 들어 웹페이지에 메뉴 요소가 있습니다. 마우스를 가리키면 메뉴가 표시되고 마우스를 멀리 이동하면 메뉴가 숨겨집니다. 유한 상태 기계를 사용하여 설명하는 경우 이 메뉴에는 두 가지 상태(표시 및 숨기기)만 있으며 마우스는 상태 전환을 유발합니다.
코드는 다음과 같이 작성할 수 있습니다.
이 라이브러리는 전역 개체 StateMachine을 제공합니다. 이 개체의 생성 메서드를 사용하면 유한 상태 기계의 인스턴스를 생성할 수 있습니다.
코드 복사
동시에 녹색 상태를 예로 들어 각 상태에 대해 두 개의 콜백 함수를 지정할 수도 있습니다.
warn 이벤트가 녹색에서 노란색으로 상태를 변경한다고 가정하면 위의 4가지 콜백 함수의 발생 순서는 onbeforewarn → onleavegreen → onenteryellow → onafterwarn입니다.
각 이벤트 및 상태에 대해 별도의 콜백 함수를 지정하는 것 외에도 모든 이벤트 및 상태에 대해 공통 콜백 함수를 지정할 수도 있습니다.
이벤트 콜백 함수에 비동기 작업(예: 서버와의 Ajax 통신)이 있는 경우 상태가 변경되기 전에 비동기 작업이 끝날 때까지 기다리는 것이 좋습니다. 이를 위해서는 전환 방법을 사용해야 합니다.
위 코드의 콜백 함수에는 비동기 작업(light.fadeOut)이 있습니다. 상태를 즉시 변경하지 않으려면 콜백 함수가 상태가 일시적으로 변경되지 않음을 나타내는 StateMachine.ASYNC 개체를 반환하도록 해야 합니다. 그런 다음 전환 메서드를 호출하여 상태를 변경합니다.
Javascript Finite State Machine을 사용하면 현재 상태에서 발생할 수 없는 이벤트가 발생할 때 자동으로 트리거되는 오류 처리 기능을 지정할 수도 있습니다.
예를 들어 현재 상태가 녹색이라면 이 시점에서는 이론적으로 경고 이벤트만 발생할 수 있습니다. 이때 중지 이벤트가 발생하면 위의 오류 처리 기능이 실행됩니다.