我一直在制作webservice的原型,我遇到了以下问题:每当我尝试使用'var'作为回调时,我得到:undefined。
我正在尝试做的是:
var mysqlquery = function (){
var vAlue = XXX;
}
var service = function (pp, ee, cb){
var toReturn= ({ //XML code
Value: vAlue
})
cb(toReturn);
};
输出应为XXX
服务运行正常并记录值,但是当我尝试使其成为回调来响应时,它是未定义的,我猜是因为节点的异步。 已经尝试将其设置为全局或全局窗口或在其他功能中调用它,但没有任何工作。我不想为此使用额外的模块,有什么方法吗? (也尝试了这个。) 任何提示都是非常苛刻的,谢谢。
答案 0 :(得分:0)
您已经知道在函数中定义var
会将其范围限制为该函数,但您可以使用return
将该数据传递出函数,如下所示:
var mysqlquery = function (){
return 'XXX';
}
console.log(mysqlquery())
> "XXX"
console.log
行中发生的事情是您的功能正在评估中,然后返回" XXX"和然后将其传递到控制台日志。
这是回调的基础:如果你有一个异步函数,你可以将一个回调函数传递给它,以输入异步函数的结果:
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