可观察对象在访问之前未完全初始化

时间:2019-06-18 09:11:04

标签: angular typescript observable

所以基本上,我试图从我的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'}

1 个答案:

答案 0 :(得分:0)

当您提到响应resp的{​​{1}}会花一些时间才能返回时,您确实是正确的,因为HTTP请求是异步的。

对于您而言,requestFromServer()语句花一些时间才能出现是完全正常的。只要console.log()在该data块中进行处理,就将为其分配resp中的引用。

如果您真的想知道何时返回可观察值,我想您可以在subscribe()的第一行添加一个console.log()语句?

subscribe()