Tôi vừa viết little helper để tạo API như thế này theo cách hơi nhất quán, có thể bạn thích nó.
// > npm i mu-ffsm # install node dependency
var mkChained = require('mu-ffsm');
Ý tưởng là bạn xây dựng trình tạo thông thạo với một số trạng thái ban đầu S
bằng cách gọi hàm nhập. Sau đó, mỗi chuỗi cuộc gọi chuyển trạng thái sang trạng thái mới. .
Giá trị bạn nhận được từ chaining được kết một loạt các cuộc gọi có thể được thực hiện như một chức năng, trong đó kêu gọi exit để xây dựng một giá trị từ trạng thái đó và bất kỳ tùy chọn bạn vượt qua trong
- nhập: * ⟶ S
- chuyển: (S ⟶ *) ⟶ S
- exit: S ⟶ (* ⟶ *)
Ví dụ
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 */}
});
Vì vậy, 0
, 1
là các chức năng nhập cảnh, thoát. Tất cả các chức năng khác chuyển đổi trạng thái bên trong. Tất cả các chức năng có thể lấy đối số, ví dụ:opt
Chúng tôi tạo ra một thể hiện của API mới được chế tác của chúng tôi,
var call = API() // entry
.whut() // transition
.then() // transition
.whut(); // transition
Và gọi nó là
var result0 = call() // exit
, result1 = call() // exit
Có một cái nhìn tại (nhỏ) source để xem cách này được thực hiện.
ps. Sử dụng câu trả lời này để cập nhật tài liệu: D
Tôi nghĩ bạn đã trả lời câu hỏi của riêng mình .... điều gì sai với khối mã thứ hai? – Zoidberg
@Zoidberg: Tiêu đề là phương pháp chuỗi để điều ở đây không thực sự là làm cho nó hoạt động nhưng làm cho nó hoạt động bằng cách sử dụng phương pháp chuỗi. – kizzx2