Socket.io返回服务器响应

时间:2017-05-03 07:46:17

标签: javascript node.js socket.io

我有这样的API:

function movePlayer(x, y){
    if (x < 0 || y < 0) return true;
    else return false;
}

现在我想只更改此函数,以便if-else在服务器端如下:

客户方:

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 个答案:

答案 0 :(得分:0)

对不起,这不是很好,但我不是Prom的专家,我希望有更多合格的人来这里

//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);
        }
    });
}