我正在尝试从Javascript数组读取数据。但是,这是不确定的。
我的代码是
sabhaDetailsArrayTemp.forEach(element => {
let arra = [];
console.log(element)
//return tmp.m_category_name ;
arra = this.onSabhaChange(element.sabha_name);
console.log(arra);
const sabha_typeOBJ = arra.find(x => x.id == 9);
console.log(sabha_typeOBJ);
this.procSabhaDetailsArray.push({ sabha_id: element.sabha_name,
sabha_type: this.newTMPArray.find(x=>x.id == element.sabha_id),
followup_id:element.followup_id });
});
我正在将数组分配给数组。我想提取该arra
的对象。我试图使用arra[0]
访问第一个元素然后进行搜索。但是,它返回:
错误TypeError:无法读取位于以下位置的未定义属性 edit-contact.component.ts:274
答案 0 :(得分:0)
如Amardeep所指出的,this.onSabhaChange(element.sabha_name);
是异步的,因此JS不会等待它完成,它会继续执行下一行代码(JS本质上是异步的)。
您需要等待执行下一行,直到您的服务返回数据。
您可以使用Promises来实现。在代码中进行以下重构:
// do following change
onSabhaChange(x) {
return new Promise(resolve => {
this.sabhaapicall().subscribe((result)=>{
/// do manipualtion for temp array :
let temparr = result;
resolve(temparray);
});
});
}
// and your method
getSabhaDetailsArra(arr){
......
this.onSabhaChange(arr).then(value => {
console.log(`promise result: ${value}`);
arra = value;
........
// further lines of code
});
console.log('I will not wait until promise is resolved');
}