首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript事件状态机

JavaScript事件状态机
EN

Stack Overflow用户
提问于 2012-11-07 10:33:14
回答 10查看 29.1K关注 0票数 33

有人知道状态机的javascript实现吗?我的目标是设置一个状态机实现,将事件绑定到状态转换。因此,如果用户点击一个按钮,那么状态就会改变,例如,这种状态可能会定义要改变的对象中的某些值。

我希望这是一个状态机,因为将会有一个规则json文件,它允许在调用某些事件时指定各种对象的值发生了什么变化。因为这将在文件中结构化,所以我认为将该信息解析到状态机对象中会很容易。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2013-03-26 23:58:50

在js中,有限状态机有两个主要的库:

1/ Machina:有很好的文档,例如,开箱即用支持两个JavaScript消息总线提供程序:postal.jsamplify.js

2/ Javascript State Machine:更简单、更容易使用,非常适合“基本”用途。

票数 37
EN

Stack Overflow用户

发布于 2016-12-24 04:07:41

我最近用JS构建了一个状态机实现,这肯定是最容易配置的,这要归功于它的转换DSL:

代码语言:javascript
复制
transitions: [
  'next    : intro > form > finish',
  'back    : intro < form           < error',
  'error   :         form >           error',
  'restart : intro        < finish'
]

它在配置和事件处理程序分配方面都非常灵活,你可以在运行时添加和删除状态,暂停和恢复转换,挂接到大量事件中,使用jQuery和反应式框架的帮助器,如Vue:

文档和一大堆演示:

  • http://statemachine.davestewart.io
票数 6
EN

Stack Overflow用户

发布于 2015-01-27 02:58:33

关于我的状态机: stateflow我刚刚创建了自己的状态机,因为我没有找到对我来说足够简单的状态机。

使用js对象定义流,其中属性是状态名称,值是具有以下属性的另一个js对象。

状态类型:状态实例对象设置为(default).

  • action:的begin、end或state

  • 函数,也可以命名为以前注册的操作或另一个流定义,在本例中它是一个子流。

  • on:属性将与事件匹配,value是要转到

的下一个状态

简单的例子

代码语言:javascript
复制
var stateflow = require('stateflow');
var flow = new stateflow.StateFlow({
   a: {
       type:'begin',
       action: function(complete) {
           // do something
           complete('done');    
       },
       on: {
           done:'b',
           again:'a'
       }
   }, 
   b: {
       type:'end',
       action: function(complete) {
           complete('finished');
       }
   }
});
flow.start(function(event) {
   console.log('flow result:', event);
});

在git https://github.com/philipdev/stateflow或通过npm查看它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13262392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档