• 所有的状态事件

    所有的状态事件

    有时候,在gen_fsm的任何状态都有可能有事件到达。除了可以用 gen_fsm:send_event/2 发送消息,并为每一个状态函数写一个子句来处理事件之外,还可以通过 gen_fsm:send_all_state_event/2 来发送消息,并用 Module:handle_event/3 来处理。

    1. -module(code_lock).
    2. ...
    3. -export([stop/0]).
    4. ...
    5.  
    6. stop() ->
    7. gen_fsm:send_all_state_event(code_lock, stop).
    8.  
    9. ...
    10.  
    11. handle_event(stop, _StateName, StateData) ->
    12. {stop, normal, StateData}.