Я просто написал little helper создать API, как это в некоторой степени последовательным образом, может быть, вам это нравится.
// > npm i mu-ffsm # install node dependency
var mkChained = require('mu-ffsm');
Идея заключается в том, что вы строите свободно строитель с некоторым начальным состоянием типа S
путем вызова функции ввода. Затем каждый связанный вызов переводит состояние в новое состояние. .
Значение, которое вы получаете от цепочки кучу вызовов может быть выполнен в виде функции, которая требует выхода построить значение из этого состояния и любые варианты проезда в
- запись: * ⟶ S
- перехода (S ⟶ *) ⟶ S
- выход: S ⟶ (* ⟶ *)
Например
var API = mkChained({
0: function(opt) {return ;/* create initial state */},
then: function(s, opt) {return s; /* new state */},
whut: function(s, opt) {return s; /* new state */},
1: function(s, opt) {return ;/* compute final value */}
});
Таким образом, 0
, 1
являются функциями входа, выхода. Все остальные функции переходят во внутреннее состояние. Все функции могут принимать аргументы, например.opt
Мы создаем экземпляр нашего нового созданного API,
var call = API() // entry
.whut() // transition
.then() // transition
.whut(); // transition
И называют его
var result0 = call() // exit
, result1 = call() // exit
Посмотрите на (маленький) source, чтобы увидеть, как это реализовано.
ps. Использовал этот ответ для обновления документов: D
Думаю, вы ответили на свой вопрос .... что случилось со вторым блоком кода? – Zoidberg
@ Zoidberg: название - это метод цепочки, так что дело здесь не в том, чтобы заставить его работать, а заставить его работать, используя цепочку методов. – kizzx2