我正在开发一个Express.io迷你项目,我仍然坚持这个变量覆盖问题.
这是我的代码:
get_time_offset = function(timezone_id){
Timezone.findById(timezone_id, function(err, doc){
if(err) {
console.log(err);
} else {
console.log(doc.offset);
}
});
}
这个代码块可以通过console.log显示doc.offset的值而没有任何问题,我想让doc.offset在Timezone Object之外可用.这是我到目前为止所得到的:
get_time_offset = function(timezone_id){
var offset;
Timezone.findById(timezone_id, function(err, doc){
if(err) {
console.log(err);
} else {
offset = doc.offset;
}
});
console.log(offset);
}
它说“偏移是未定义的”,我似乎找不到任何其他方法来解决这个问题.
解决方法:
我想把你的初始声明改为……
var offset = {};
…或者,您的console.log正在函数完成之前执行.通过在函数内添加日志进行简单检查…
} else {
offset = doc.offset;
console.log('from inside ... ', offset);
}
});
}
console.log('from outside ... ', offset);
…并查看“外部”是否先发射.
编辑:
如果“从外部”首先运行,请使用初始函数调用的后续代码.
get_time_offset = function(timezone_id){
var offset;
function processResult(val) {
console.log(val);
}
Timezone.findById(timezone_id, function(err, doc){
if(err) {
console.log(err);
} else {
offset = doc.offset;
}
processResult(offset);
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。