我试图从我的节点服务器获取一个简单的值,如下所示:
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 。
我相信这是一个简单的问题,所以请不要在没有解释的情况下向我投票。
非常感谢你。答案 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!
});