Javascript 如何使用另一个函数中某个函数的值作为回调?节点js

Javascript 如何使用另一个函数中某个函数的值作为回调?节点js,javascript,node.js,Javascript,Node.js,我一直在制作webservice的原型,我遇到了以下问题:每当我尝试使用“var”作为回调时,我都会得到:未定义 我想做的是: var mysqlquery = function (){ var vAlue = XXX; } var service = function (pp, ee, cb){ var toReturn= ({ //XML code Value: vAlue }) cb(toReturn); }; 输出应

我一直在制作webservice的原型,我遇到了以下问题:每当我尝试使用“var”作为回调时,我都会得到:未定义

我想做的是:

var mysqlquery = function (){
   var vAlue = XXX;
}
var service = function (pp, ee, cb){
 var toReturn= ({                      //XML code
     Value: vAlue
     })
cb(toReturn);
};
输出应为XXX

该服务运行良好并记录值,但当我尝试将其作为回调来响应时,它是未定义的,我猜这是因为节点的异步。 已经尝试将其设置为全局或global.window,或在另一个函数中调用它,但均无效。我不想为此使用额外的模块,有什么方法吗?(我也试过这个。)
任何提示都值得一提,谢谢。

您已经知道在函数中定义
var
会将其范围限制在该函数上,但是您可以使用
返回将该数据从函数中传递出去,如下所示:

var mysqlquery = function (){
   return 'XXX';
}

console.log(mysqlquery())
> "XXX"
console.log
行中发生的情况是,您的函数正在被评估,并返回“XXX”,然后它被传递到console.log

这是回调的基础:如果你有一个异步函数,你可以将回调函数传递给它,以输入异步函数的结果:

function print(res) {
  console.log(res)
}

function asyncThing(cb) {
  var ten = 5 + 5
  window.setTimeout(cb.bind(this, ten), 5000)
}

asyncThing(print)
... [wait five seconds]...
> 10

你为什么要把
function()之后(
??行
var值=[0]表示什么。字段平均值?您是否缺少数组的名称?已编辑,现在可以理解了吗?
vAlue
仅在
mysqlquery
的范围内可用,而不在
服务
内。如果你想使用它,你必须
返回
它。你还必须实际调用
mysqlquery
。我只是描述这个概念——我没有足够的原始代码来提供有效的响应。如果你描述一下你想做些什么,我可以给出更多的建议。好吧,我必须使函数同步并等待,因为返回是在发送响应后设置的,我会处理它,谢谢你的帮助。无法向上投票,因为我还没有足够的代表。是的,异步函数会变得很棘手,根据您尝试执行的操作,有不同的方法返回您想要的值。如果你喜欢阅读文档,你可以试一下,在过去的3个小时里,我一直在用它烧焦我的睫毛,但我仍然不知道如何实现它。