1
私はこのようなAPI:Socket.ioリターンサーバの応答
function movePlayer(x, y){
if (x < 0 || y < 0) return true;
else return false;
}
、今私があれば、他のこのようなサーバ側にあるように、これだけの機能を変更したい:
クライアント側:
function movePlayer(x, y){
var result;
socket.emit('move_player', {
_x: x,
_y: y
});
socket.on('move_finished', function(data){
result = data._result;
});
return result;
}
サーバー側:
var result;
socket.on('move_player', function(data){
if (data._x < 0 || data._y < 0) result = false;
else result = true;
socket.emit('move_finished', {_result: result});
});
しかし、サーバの応答が非同期であり、クライアント側が応答を得るのを待たずに動作するため、動作しません。だから、関数定義だけを変更するだけでそれを行う方法はありますか?
を来ることを願って、私はあなたが待つためにいくつかの約束を使用する必要がありますと思います申し訳ありません結果https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise – Jerome
@Jeromeしかし、約束の '' then() 'メソッドで' '結果を返すことはできますか? ' –
はい、あなたはそれを行うことができるはずです、私の答えを見てください – Jerome