Javascript-我无法访问列表的内容
我对javascript有一个问题,我想了解它的工作原理和原因 我有一个使用API的对象。在这个对象中,我有一个对象列表类型的属性 我的对象可以很好地了解数据。 但是当我尝试访问我的对象列表后,我就不能了 如果我这样做Javascript-我无法访问列表的内容,javascript,typescript,Javascript,Typescript,我对javascript有一个问题,我想了解它的工作原理和原因 我有一个使用API的对象。在这个对象中,我有一个对象列表类型的属性 我的对象可以很好地了解数据。 但是当我尝试访问我的对象列表后,我就不能了 如果我这样做 console.log (myObject.lstOtherObject); console.log (myObject.lstOtherObject[0]); console.log (myObject.lstOtherObject); 将显示我的对象列表 如果我这样做
console.log (myObject.lstOtherObject);
console.log (myObject.lstOtherObject[0]);
console.log (myObject.lstOtherObject);
将显示我的对象列表
如果我这样做
console.log (myObject.lstOtherObject);
console.log (myObject.lstOtherObject[0]);
console.log (myObject.lstOtherObject);
它显示我没有定义
如果我把我的代码放在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[0]);
console.log (myObject.lstOtherObject);
将显示我的对象列表
console.log
在这里误导了您。它不是直接评估它。当您在开发人员控制台中展开列表时,它将对其进行评估
执行此代码时,myObject.lstOtherObject
尚未包含任何内容
最常见的原因是您启动了一个异步函数,例如Ajax请求,并试图立即使用该值。您不能这样做,因为您没有给异步函数一个实际执行的机会。您需要在异步函数完成后使用该值–可以使用回调、承诺或异步/等待
如果我这样做
console.log (myObject.lstOtherObject);
console.log (myObject.lstOtherObject[0]);
console.log (myObject.lstOtherObject);
将显示我的对象列表
console.log
在这里误导了您。它不是直接评估它。当您在开发人员控制台中展开列表时,它将对其进行评估
执行此代码时,myObject.lstOtherObject
尚未包含任何内容
最常见的原因是您启动了一个异步函数,例如Ajax请求,并试图立即使用该值。您不能这样做,因为您没有给异步函数一个实际执行的机会。您需要在异步函数完成后使用该值–可以使用回调、承诺或异步/等待。听起来像是异步的。这是我们看不到的代码。请添加响应数据结构并检查@epascarello提到的内容。请粘贴完整的控制台日志。当给出关于上下文和状态的不完整信息时,很难提供帮助。另外,在调用addLight之前,您可能正在做第二个日志?我根据请求添加了代码,以便您可以帮助我。听起来好像有些东西是异步的。这是我们看不到的代码。请添加响应数据结构并检查@epascarello提到的内容。请粘贴完整的控制台日志。当给出关于上下文和状态的不完整信息时,很难提供帮助。另外,也许你在调用addLight之前正在做第二个日志?我按照要求添加了代码,以便你能帮助我。好的,如果我想调用API并使用结果,我需要这样做
async function getRequest(){return await axios.get(URL);}
,并且我保证会得到我的APIOk结果,因此,如果我想调用一个API并使用所需的结果,我需要这样做异步函数getRequest(){return await axios.get(URL);}
,并且在承诺中我得到了API的结果