2017-05-03 1 views
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}); 
}); 

그러나 서버의 응답이 비동기이며 클라이언트 측에서 응답을 받기 위해 기다리지 않으므로 작동하지 않습니다. 그렇다면 함수 정의 만 변경하면됩니다.

+1

올 것이다 희망, 약속의 프로 아니에요 결과 https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise – Jerome

+0

@Jerome하지만 약속의'then()'메소드에서 어떻게 결과를 반환 할 수 있습니까? –

+0

예, 대답 할 수 있어야합니다. – Jerome

답변

0

죄송합니다 정말 좋지 않아하지만 난 당신이 기다리는 몇 가지 약속을 사용해야합니다 생각보다 자격을 갖춘 사람이 여기

//somewhere else 
 
aFunction().then((result) => { 
 
      //do something with this result 
 
     }) 
 
     .catch(err => { 
 
      console.log(err); 
 
     }) 
 

 

 

 
aFunction = function(){ 
 
    return new Promise((resolve, reject) { 
 
     //some code that generates your result 
 
     if (result) { 
 
      resolve(result); 
 
     } else { 
 
      reject(error); 
 
     } 
 
    }); 
 
}