我只是寫了little helper在一定程度上一致的方式來創建這樣的API,也許你喜歡它。
// > npm i mu-ffsm # install node dependency
var mkChained = require('mu-ffsm');
的想法是,通過調用入口函數構造與S
型的一些初始狀態一口流利的建設者。然後每個鏈接的調用將狀態轉換爲新狀態。 。
您從鏈接一串電話可以作爲一個函數,該函數調用exit構建從該狀態你在傳遞值和任何選項執行中獲得的價值
- 項:*⟶小號
- 過渡:(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 2009-09-18 17:05:44
@Zoidberg:標題是方法鏈,所以這裏的東西並不是真的要讓它工作,而是讓它使用方法鏈來工作。 – kizzx2 2009-09-18 18:29:07