斯卡拉 – Akka FSM转到未来
发布时间:2020-12-16 09:08:13 所属栏目:安全 来源:网络整理
导读:我想在将来改变FSM状态,但我不工作.. 我想我正在寻找pipeTo like方法. When(State.Waiting) { case Event(anyMsg,anyData) = asyncCode.map(res = if (res == 1) { goto(State.Working) using Data.MyData } else { stay() replying "bad response" } )} got
我想在将来改变FSM状态,但我不工作..
我想我正在寻找pipeTo like方法. When(State.Waiting) { case Event(anyMsg,anyData) => asyncCode.map(res => if (res == 1) { goto(State.Working) using Data.MyData } else { stay() replying "bad response" } ) } goto命令被执行但fsm不会将状态更改为State.Working 我自己找到了这个工作 When(State.Waiting) { case Event(anyMsg,anyData) => asyncCode.map(res => if (res == 1) { self ! "do job" } else { stay() replying "bad response" } ) case Event("do job",anyData) => { goto(State.Working) using Data.MyData } } 可能有一个更好的主意来解决问题 解决方法
不要在将来改变你的演员的状态或不在主“线程”内的任何东西.
解决问题的正确方法是向self发送一条消息,它只会改变状态,比如 When(State.Waiting) { case Event(anyMsg,anyData) => asyncCode.map(res => if (res == 1) { self ! GoToWorking(Data.MyData) } else { self ! Stay } ) goto(State.WaitingForResponse) } When (State.WaitingForResponse) { case Event(GoToWorking(data),_) => goto(State.Working) using data case Event(Stay,_) => stay() } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 嗯,那些待我挑战的一些东西(在完成《数据结构》
- angularjs – yeoman grunt错误:[$injector:mo
- angularjs – ng-submit和ng-click之间的差异
- AngularJS服务http成功功能使用错误的“这个”范
- 使用docker-compose构建容器,但稍后使用-it选项运
- 汇编vim语法高亮
- Angular4_readonly,disabled,hidden属性动态启用
- twitter-bootstrap – 显示一个popover和隐藏其他
- 将记事本语法高亮文件转换为vim(或者有没有人有q
- Angular4+NodeJs+MySQL 入门-05 接口调用
热点阅读