Javascript 如何使用另一个函数中某个函数的值作为回调?节点js
我一直在制作webservice的原型,我遇到了以下问题:每当我尝试使用“var”作为回调时,我都会得到:未定义 我想做的是: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); }; 输出应
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个小时里,我一直在用它烧焦我的睫毛,但我仍然不知道如何实现它。