0
我收到这种奇怪的行为,其中对象的键值对的输出被假定为未定义,尽管它清楚地在对象中定义并且正在打印输出。我的对象返回控制台中定义的值,但直接访问时未定义
我的代码如下所示:
addLocation(loc: any) {
this.getLocationGPSFromFirebase(loc.$key).then(result => loc = Object.assign(loc, result));
console.log(loc);
this.addLocationToLocalArray(loc);
}
的console.log
的浏览器的输出是: 对象{地址: “blablabla” 城市:对象
{address: "blablabla"…}
address: "blablabla"
latitude: 37.412368
longitude: 6.0755334
$exists: function()
$key: "uniqueKeyFromFirebase"
__proto__: Object
我的代码对象创建并随后推送到阵列:
addLocationToLocalArray(loc: Location) {
console.log(loc.latitude, loc.longitude);
this.tourLocs.push({
address: loc.address,
latitude: loc.latitude,
longitude: loc.longitude
});
}
输出在console.log(loc.latitude, loc.longitude);
的t为:
undefined, undefined
当我打印的阵列,它看起来像这样:
[Object]
0: Object
address: "blablabla"
latitude: undefined
longitude: undefined
__proto__: Object
length: 1
__proto__: Array(0)
这是绝对怪异的行为,我不知道是什么原因造成的。
你必须在调用'addLocationToLocalArray'之前等待承诺!没有办法立即得到它。调用'然后'不会阻止。 – Bergi
感谢您的帮助。我没有寻找合适的条款。我应该删除问题还是保持开放?不知道这个规则。 – Spurious
已关闭,您不必删除它。 – Bergi