首页 > 解决方案 > 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]);

标签: javascripttypescript

解决方案


如果我做

console.log (myObject.lstOtherObject);

显示我的对象列表。

console.log在这里误导你。它不会立即评估它。当您在开发者控制台中展开列表时,它正在评估它。

当您执行此代码时,myObject.lstOtherObject还没有任何内容。

最常见的原因是您启动了一个异步函数,例如 Ajax 请求,并试图立即使用该值。你不能这样做,因为你没有给异步函数一个实际执行的机会。您需要在异步函数完成后使用该值——通过使用回调、promise 或 async/await。


推荐阅读