javascript - Javascript - 我无法访问列表的内容
问题描述
我对 javascript 有疑问,我想了解它为什么以及如何工作。
我有一个使用 API 的对象。在这个对象中,我有一个对象列表类型的属性。
我的对象对数据非常了解。但是当我尝试访问我的对象列表后,我不能。
如果我做
console.log (myObject.lstOtherObject);
显示我的对象列表。
如果我做
console.log (myObject.lstOtherObject[0]);
它向我显示undefined。
如果我将代码放在 setTimeout 中,我没有问题。
可能是什么问题?
感谢您的回复
编辑1:
public static discoverBridge(){
BridgeController.lstBridge = [];
getRequest(URL).then(result => {
for(const brd of result.data){
BridgeController.lstBridge.push(new Bridge(
brd.id,
brd.internalipaddress,
'macaddress' in brd ? brd.macaddress : '',
'name' in brd ? brd.name : ''));
}
});
}
export async function getRequest(url: string, data?: any[]) {
return await axios.get(url, data).then((response: any) =>{
return { status:response.status, data:response.data };
});
}
BridgeController.discoverBridge();
console.log(BridgeController.lstBridge[0].lstLights[0]);
console.log(BridgeController.lstBridge[0].lstLights[0]);
解决方案
如果我做
console.log (myObject.lstOtherObject);
显示我的对象列表。
console.log
在这里误导你。它不会立即评估它。当您在开发者控制台中展开列表时,它正在评估它。
当您执行此代码时,myObject.lstOtherObject
还没有任何内容。
最常见的原因是您启动了一个异步函数,例如 Ajax 请求,并试图立即使用该值。你不能这样做,因为你没有给异步函数一个实际执行的机会。您需要在异步函数完成后使用该值——通过使用回调、promise 或 async/await。
推荐阅读
- tfs - 如何在不升级原始服务器的情况下测试新的 TFS 服务器
- c# - 如何修复 IEnumerator WaitForSeconds 在 Unity C# 中不起作用
- openfiledialog - Avalonia 中的 OpenFileDialog - ShowAsync 出错
- c# - 将一个对象添加到多个数组并保持每个副本之间的差异?
- javascript - 如何将默认的“数据”值初始化为回调函数的返回值?
- javascript - 使用 PM2 运行 Typescript 应用程序
- javascript - JavaScript split method remove first 2 sections
- python - 如何解决''ComplexWarning:将复杂值转换为实数会丢弃虚部''?
- powershell - 已编辑注册表项,但仍禁用策略
- ag-grid - 如何将设置过滤器更新为 ag-grid v21?