【发布时间】:2015-10-25 02:52:11
【问题描述】:
我无法在回调中修改 outputString 变量的值。
var outputString;
client.get(key,function(err,value){
outputString = "key="+key+" value="+value ;
console.log(outputString);
})
console.log(outputString);
当我打印 outputString 的值时,它显示“未定义”
【问题讨论】:
-
是否定义了
key?value是否返回了一些东西?检查if(err) -
值得一读:How to return the response from an asynchronous call?。这是关于 Javascript 和异步操作最常见的混淆点之一。
-
@jfriend00 好的。所以控件立即回到console.log。所以我看不到变量的修改值。所以不可能实现我想要做的事情。我的意思是在更新之前访问变量。但我认为如果我放一个计时器这会起作用。我在打印变量之前等待一段时间
-
如果您阅读了您被标记为重复的问题的答案,它会为您提供多种选择。计时器是一个糟糕的选择,因为它假定它知道异步操作将花费多长时间。请阅读 dup 问题的答案。这一切都在那里拼写出来。异步操作需要异步编码技术。您不能将同步编码技术与异步操作一起使用。如果您要使用 Javascript 编写代码,则必须习惯这一点并学习如何正确使用。
-
@jfriend00 是的。再次感谢您的意见。
标签: javascript node.js callback redis asynccallback