Я сейчас пишу игровой движок в nodejs.
В моей игре несколько состояний.Давайте назовем их StateA, StateB, StateC.Поток последовательности: StateA => StateB => StateC.
Я хотел бы проверить состояние моего двигателя в конце каждого состояния.В настоящее время у меня есть такая структура:
function attachEventListeners = function(instance) {
instance.on('START_STATE_A', stateA);
instance.on('START_STATE_B', stateB);
instance.on('START_STATE_C', stateC);
}
var stateACallBack = function() {};
var stateBCallBack = function() {};
var stateCCallBack = function() {};
function stateA() {
// Do something...
stateACallBack();
setTimeout(function() { this.emit('START_STATE_B'); }, 3000)
}
function stateB() {
// Do something...
stateBCallBack();
setTimeout(function() { this.emit('START_STATE_C'); }, 3000)
}
function stateC() {
// Do something...
stateCCallBack();
setTimeout(function() { this.emit('START_STATE_A'); }, 3000)
}
Таким образом, мой текущий подход предполагает переопределение тестовых случаев в StateXCallback и выполнение логики тестирования в этих функциях.
Однако я вижу состояние гонки, при которомStateB запускается до того, как stateACallBack завершит выполнение.В результате, stateACallback видит состояния, которые должны оцениваться с помощью stateBCallback.
Я попытался внедрить время задержки между состояниями, однако это приводит к дополнительным ошибкам состояния гонки в моей кодовой базе.
Может кто-нибудь, пожалуйста, просветить меня лучше подход к этой проблеме?