我不知道这是否正常但是当我尝试在Couchbase
中的回调(node.js
回调)中访问变量时,它无法正常工作。
var obj = new Object();
bucket.get(key, function(error, count) {
bucket.get(key2, function(error, prop) {
obj.entry = prop.value.value;
obj[entry+"_date"] = new Date(prop.value.created_at).toString();
})
})
我错过了什么吗?
另外:我无法在回调中声明Object
var,因为我稍后会访问它。
答案 0 :(得分:1)
好的,我会试试这个:
var obj = {};
bucket.get(key, function(error, count) {
bucket.get(key2, function(error, prop) {
obj[entry] = prop.value.value;
var extraKey = entry+"_date"; // ensure this is an string
obj[extraKey] = new Date(prop.value.created_at).toString();
console.log(obj);
// obj[entry] exists here
})
})
// but obj would be empty here :(
另外请记住,如果你在回调的上下文之后使用obj,实际上你可能没有设置属性,只是因为回调还没有执行。回调是异步的。你想要用obj
个新道具做的任何事情应该发生在设置它们的相同环境中。另一个选择是使用promises
重构此代码,这样您就可以拥有所需的执行顺序。