Ich habe eine API wie folgt aus:Socket.io Rückkehr Serverantwort
function movePlayer(x, y){
if (x < 0 || y < 0) return true;
else return false;
}
und jetzt will ich nur diese Funktion ändern, so dass die if-else auf der Server-Seite ist wie folgt:
Client-Seite:
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;
}
Server-Seite:
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});
});
Aber es wird nicht funktionieren, da die Antwort des Servers asynchron ist und die Client-Seite nicht warten wird, um die Antwort zu erhalten. Gibt es eine Möglichkeit, dies zu tun, indem Sie nur die Funktionsdefinition ändern?
Ich glaube, Sie müssen einige Versprechen verwenden, zu warten, das Ergebnis https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise – Jerome
@Jerome Aber wie kann ich 'result;' in der 'then()' Methode eines Versprechens zurückgeben? –
Ja, Sie sollten es schaffen, schauen Sie meine Antwort – Jerome