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

时间:2016-07-06 21:44:04

标签: javascript node.js

我一直在制作webservice的原型,我遇到了以下问题:每当我尝试使用'var'作为回调时,我得到:undefined。

我正在尝试做的是:

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

输出应为XXX

服务运行正常并记录值,但是当我尝试使其成为回调来响应时,它是未定义的,我猜是因为节点的异步。 已经尝试将其设置为全局或全局窗口或在其他功能中调用它,但没有任何工作。我不想为此使用额外的模块,有什么方法吗? (也尝试了这个。) 任何提示都是非常苛刻的,谢谢。

1 个答案:

答案 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