私は論理的な問題を抱えています。それは工場のパターンの一部です(私は期待しています)?オブジェクトがインスタンス化されていない間にobservableを送信します
問題は次のとおりです。 -Iパラメータ 'p'を持つクラス 'Cl'があります。 - 'Cl'コンストラクタで、私はpの正しい値を取得するためにhttpリクエストを行います(この部分も非常に奇妙です)。 -'Cl 'は' p 'またはその一部を返すgetterを持っています。
私がしたときinstance = new CL(); instance.get();
私のhttpリクエストはまだ完了していません。したがって 'p'は定義されていません。 ゲッターは、pが定義されているときにのみ受け入れられる観測値を返すことができますか?
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]);
}
}
あなたはどのようにpがインスタンス化してくださいときに果たしていきますどの観察可能(または約束、それがあるべき場合)を返すように教えてもらえます:
は、おそらくいくつかのコードは、より良い状況を説明します。ありがとう。
(私はconstuctorのhttpリクエストについていくつかのことを読んでいますが、私の考えは間違っているかもしれません)。
すべての約束の最初に、あなたのテンプレートたちにして非同期ですか。約束が完了したかどうかを確認する。 約束を保存しようとします。 this.p =レスポンス。 そして、3番目に、これを手に入れよう。 – Swoox
@Swoox申し訳ありませんが、私は二度読んでいますが、私はこれを理解していません。 – ssbb
存在しないオブジェクトを返そうとします。あなたのアプリケーションがあなたの約束よりも速いからです。 – Swoox