我正在尝试让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会记录该值,但如果我尝试记录值,则无法正常工作。
答案 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
在该函数中重新定义它,并且其范围变为“封闭函数”。希望这会有所帮助。