从回调函数内部返回javascript变量

时间:2017-11-12 19:31:33

标签: javascript callback

我正在尝试让client.get返回回复值,以便可以全局使用。它一直在说undefined.any建议

var redis = require("redis");
var websocket= require("websocket");
var valuewanted;
websocket.on('message', function(data) {

 if (data.type == "purchase" && data.price > 0) {

  console.log("==========================================================");
  console.log(data );
  console.log("==========================================================");

client.get(p1, function(err, reply) {
        var valuewanted = reply;
            console.log(reply);
        });  
});

console.log会记录该值,但如果我尝试记录值,则无法正常工作。

1 个答案:

答案 0 :(得分:2)

var放在client.get函数中:

client.get(p1, function(err, reply) {
  // valuewanted already defined above
  valuewanted = reply;
  console.log(reply);
});  

如果在函数中使用var,则会对该函数进行范围阻止。

来自mozilla

  

用var声明的变量的范围是它的当前执行   context,可以是封闭函数,也可以是在任何函数外部声明的变量global。

在这种情况下,在该函数中使用var在该函数中重新定义它,并且其范围变为“封闭函数”。希望这会有所帮助。