Javascript 使用承诺对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 };

如果我有两个小型fsm,并希望它们之间进行通信,该怎么办。 在通信过程中可能会发生一连串的呼叫,如

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。我不知道你到底在这里做什么,但是您通常需要
返回
承诺,然后
回调。