这个问题在这里已有答案:
我试图从ngrx Store获取数据(对象数组)并使用Angular 2中的Observables提供的subscribe选项分配给数组,但问题是当我尝试读取数组的内容时 . 以下是一段代码 - >
metaData$: Observable<MetaClassDefinition[]>;
myArray: MetaClassDefinition[] = [];
constructor(private store: Store<fromRoot.State>) {
this.metaData$ = store.select(fromRoot.getMetadata);
}
this.metaData$.subscribe(
data => {
if (data.length > 0) {
// Deep copy array
data.forEach(v => this.myArray.push({...v}));
}
},
error => { console.log(error)}
);
console.log(this.myArray); //-------(1)
console.log(this.myArray.length); //-------(2)
现在,第一个console.log打印出像这样的对象数组 - >
但是,我尝试打印第二个console.log,我得到数组的大小为零 . 有什么东西我错过了吗?
2 回答
尝试在订阅中打印数组信息 .
这是因为异步操作的时序问题 . 移动订阅中的控制台语句以查看更多您期望的内容 .
要添加到此...通过将对象引用记录到控制台...然后稍后打开...数据已到达此点并显示在调试器中 .
数组计数立即进行评估(在检索数据之前),因为它是一个简单的数字,不会重新评估 .