【发布时间】:2017-08-25 16:02:54
【问题描述】:
我有一个逻辑问题,当它感觉可行时,我无法用 observable 解决。它是(我期望的)工厂模式的一部分?
问题是: -我有一个带有参数'p'的类'Cl'。 -在'Cl'构造函数中,我发出一个http请求来获取p的正确值(是的,这部分也感觉很奇怪) -'Cl' 有一个 getter,它返回 'p' 或其中的一部分。
当我做instance = new CL(); instance.get(); 当然我的http 请求还没有完成。所以'p'是未定义的。
getter 能否返回一个仅在 p 得到定义时才被接受的 observable ?
也许一些代码可以更好地解释这种情况:
import {lot of thigs } from '@angular/core'; //and RxJs
@Component({
//...
})
export class aClass {
private p:any
constructor() {
this.p = return this.Http.get('a/route')//let's say this request take AGE
.map((response) => {
return response.json();
});
}
//Obviously no working cause cause p isn't "define yet"
public getP(index){
return this.p[index];
}
//I'd hope something like this would work but it doesn't.
public getObservableP(index): Observable<any>{
return Observable.of(this.p[index]);
}
}
你能告诉我如何返回一个 Observable (或者如果它应该是一个 Promise),它会在 p 实例化时实现。谢谢。
(我已经阅读了一些关于构造函数中的http请求不好的东西,也许我的概念在这里是错误的)。
【问题讨论】:
-
首先,promise 是异步的,所以在我们的模板中?检查承诺是否完成。第二次尝试保存承诺。 this.p = 响应;第三个可能会为 this.p. 做一个吸气剂。
-
@Swoox 对不起,我读了两遍,但我不明白这个。
-
您尝试返回一个不存在的对象。因为您的申请比您的承诺更快。
-
确实如此。这就是为什么我正在寻找一个 Obersvable/promise 仅在 p 实例化时才会解决的原因。我可以在 getter 中发送这个 Observable/promise
-
你在模板中使用这个吗?
标签: angular typescript observable