javascript - 在 Machina.js 中传递变量

标签 javascript node.js machina.js

我正在尝试掌握 machina.js 的工作原理。

我定义了 state1,它做自己的事情,它生成一个变量 someVar,然后转换到 state2

如何将 someVar 作为参数传递给 state2

var fsm = new machina.Fsm({
    initialState: "uninitialized",
    states: {
        uninitialized: {},
        state1: {
            _onEnter: function() {
                var someVar = "..."; // Stuff.
                this.transition("state2");
            }
        },
        state2: {
            _onEnter: function() {
                // someVar as argument somehow...?
                console.log(someVar);
            }
        }
    }
});

最佳答案

你可能会做这样的事情:

function FiniteStateMachineSetup() {
    this.someVar = null;
    this.fsm = new machina.Fsm({
        initialState: "uninitialized",
        states: {
            uninitialized: {},
            state1: {
                _onEnter: state1_onEnter.bind(null, this)
            },
            state2: {
                _onEnter: state2_onEnter.bind(null, this)
            }
        }
    });
}

function state1_onEnter(self) {
    self.someVar = "..."; // Stuff.
    self.fsm.transition("state2");
}

function state2_onEnter(self) {
    // someVar as argument somehow...?
    console.log(self.someVar);
}

然后您可以通过以下方式调用代码:

FiniteStateMachineSetup();

关于javascript - 在 Machina.js 中传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28474012/

相关文章:

javascript - Laravel Dusk - 执行 javascript 脚本并等待 Promise 被解析以返回值

javascript - 在刷新之前不会使用 AJAX 进行更新?

javascript - 如何使用 Mongoose + Express.js 存储数组?

node.js - 使用 typegoose 时出现 GraphQLError : Type Query must define one or more fields.

javascript - 从一种特定状态转换到另一种特定状态时执行操作?

javascript - JS/CSS 问题 - Mouseenter 事件在隐藏父元素后不起作用

javascript - 在 react 中重构条件逻辑

node.js - Ember Server : "Port 4200 is already in use", 当没有进程在 4200 上运行时

javascript - 如何将 machina.js 包含到 Node.js 应用程序中