等待.on()被完成,而不是挂起?



我希望的输出是this._playerArray[index]。行动才能真正拥有玩家的行动。我希望写"await getAction()"会阻止我的代码运行。问题是,承诺是挂起的,代码不关心等待,直到它被实现,直到继续。

是否有任何方法来编写此代码,以便我的代码将等待,直到承诺履行,即从客户端发出的事件?请注意,代码运行得如此之快,以至于玩家无法输入任何内容。

下面的代码输出"promise {}",玩家的动作是"undefined",则"bettingPhase finish&;

async _bettingPhase() {
var index = 0;
var pArray = this._playerArray;
function getAction(index, playerArray) {
var action = null;
let myPromise = new Promise(function(resolve) {
playerArray[index].id.on('turn', (turn) => {
resolve(turn);
})
});
console.log(myPromise);
}
this._playerArray[index].action = await getAction(index, pArray);
console.log(this._playerArray);
console.log('bettingPhase finish');
}

您忘记在getAction函数中返回您的承诺。

像这样:

function getAction(index, playerArray) {
var action = null;
let myPromise = new Promise(function(resolve) {
playerArray[index].id.on('turn', (turn) => {
resolve(turn);
})
});
return myPromise;
} 

最新更新