所以基本上,我试图从我的Observable返回的数据中访问一个参数,这是Http调用的结果,但是我想访问的参数someProperty
不可用,因为该对象是仅在调用方法后完全初始化。
控制台登录doSomething
仍会打印出对象,但是someProperty
仅在oncomplete
事件之后显示一段时间。
因此,我想问问检测可观察对象数据是否已完全初始化的最佳方法是什么。
我的代码如下。
export interface Result {
anotherProperty: string;
someProperty: any;
}
...
data: Result = [];
...
doSomething(){
console.log(this.data[0]);
//for (const result of this.data) {doMoreThing(result.someProperty);}
setTimeout(() => { console.log(this.data[0]); }, 500);
}
this.myService.requestFromServer(...).subscribe((resp) => {
this.data = resp.data;
doSomething();
})
console.log的结果
{anotherProperty: 'dummy'}
{anotherProperty: 'dummy', someProperty: 'dummy'}
答案 0 :(得分:0)
当您提到响应resp
的{{1}}会花一些时间才能返回时,您确实是正确的,因为HTTP请求是异步的。
对于您而言,requestFromServer()
语句花一些时间才能出现是完全正常的。只要console.log()
在该data
块中进行处理,就将为其分配resp
中的引用。
如果您真的想知道何时返回可观察值,我想您可以在subscribe()
的第一行添加一个console.log()
语句?
subscribe()