我只是写了一个小助手来以某种一致的方式创建这样的 API,也许你喜欢它。
// > npm i mu-ffsm # install node dependency
var mkChained = require('mu-ffsm');
S
这个想法是您通过调用入口函数来构建具有某种初始类型状态的流利的构建器。然后每个链式调用将状态转换为新状态。
您从链接一堆调用中获得的值可以作为一个函数执行,该函数调用 exit 以从该状态和您传入的任何选项构造一个值。
- 条目:* ⟶ 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
看看(小)源代码,看看它是如何实现的。
附言。使用此答案更新文档:D