从双嵌套函数返回值

时间:2016-05-26 18:06:38

标签: javascript node.js socket.io

我试图从我的节点服务器获取一个简单的值,如下所示:

getNodeServerValue = function()      {
    return io.socket.emit('server-Query', 
         function(data) {
               console.log('data is now: ' + data);  // works fine!
               return (data);
         }
   );
}

我希望能够检索这样的值:

var myReturnedValue = getNodeServerValue();

returnedValue 包含函数本身,而不是返回的值。并且getNodeServerValue()()也不起作用。

由于jScript的异步特性,我试图返回变量,setTimeout,clearTimeout等没有成功。

此示例基于“Fixed width integer types

中的”发送和获取数据(确认“示例)

查看socket.io docs.here对我没有帮助,因为我的要求是双嵌套的,而且我还需要用变量命名 getNodeServerValue

我相信这是一个简单的问题,所以请不要在没有解释的情况下向我投票。

非常感谢你。

1 个答案:

答案 0 :(得分:1)

您可以使用promise库,或者如果在Node中本机支持它们

io.getNodeServerValue = new Promise(function (resolve, reject) {
  io.socket.emit('server-Query', 
         function(data) {
               resolve(data);
         }
   );
});

像这样使用它:

io.getNodeServerValue.then(function (data) {
  // data is here!
});