Javascript 使用承诺对FSM方法进行异步调用的模式有多糟糕?
如果我有两个小型fsm,并希望它们之间进行通信,该怎么办。 在通信过程中可能会发生一连串的呼叫,如Javascript 使用承诺对FSM方法进行异步调用的模式有多糟糕?,javascript,promise,Javascript,Promise,如果我有两个小型fsm,并希望它们之间进行通信,该怎么办。 在通信过程中可能会发生一连串的呼叫,如 A.first(B.first(A.second(B.second)))要打破这个链条,我想使用承诺来进行异步函数调用,就像下面的代码中那样 function FirstTinyFSM() { this.state = 'ready'; } FirstTinyFSM.prototype.a = function(data) { ... //process data };
A.first(B.first(A.second(B.second)))
要打破这个链条,我想使用承诺来进行异步函数调用,就像下面的代码中那样
function FirstTinyFSM() {
this.state = 'ready';
}
FirstTinyFSM.prototype.a = function(data) {
...
//process data
};
FirstTinyFSM.prototype.start = function() {
global_event_emiter.on('some event', this.process_some_event.bind(this));
};
FirstTinyFSM.prototype.process_some_event = function() {
Promise.resolve(1).then(function(){
second.b('some data');
})
.catch(function(err){
// handle errors
});
};
function SecondTinyFSM() {
this.state = 'ready';
}
SecondTinyFSM.prototype.b = function(data) {
...
// process data
Promise.resolve(1).then(function(){
first.a('some data');
})
.catch(function(err){
// handle errors
});
};
first = new FirstTinyFSM();
second = new SecondTinyFSM();
first.start();
这种模式有多糟糕?我还有其他选择吗?你会想看看CSP。我不知道你到底在这里做什么,但你会想
从你的回复承诺,然后一般地回拨。你会想看看CSP。我不知道你到底在这里做什么,但是您通常需要从返回承诺,然后回调。