2017-07-10 3 views
-2

私は角度2の変数に未定義の値を取得しています。変数を初期化するためのデータを提供するサービスを呼び出す関数があります。 HTTPリクエストを取得します。そして、未定義の変数として処理することができない要求を得る。サービスコール後の定義されていない値の取得角度2

コード:

variable:any; 
constructor(private http: Http, private serviceOne: ServiceOne){ 
function1(); //service call to get data 
function2(); //http get request 
} 

function1(){ 
calls request //subscribes data 
data =>{this.variable = data.var}; 
} 

function2(){ 
console.log(this.variable); //undefined 
http get request uses this.variable 
} 

答えて

0

あなたはfunction1()はこれにデータを設定するための非同期呼び出しをしているようです。変数。このような場合は、function2()に移動する前に非同期関数が完了するのを待たなければなりません。

は、私はそれを同期させるにはどうすればよい

variable:any; 
constructor(private http: Http, private serviceOne: ServiceOne){ 
function1(); //service call to get data 
} 

function1(){ 
yourAsyncCall(). subscribe(res=>{ 
this.function2(res); 
}) 
} 

function2(variable){ 
this.variable=variable ; 
//Use variable in your http requeat 
} 
+0

をしようか? @Gili –

+0

それはあなたのデータソースに依存しますが、それがサーバからフェッチされていれば同期できません。それの性質によるhttpリクエストは非同期です。なぜそれを同期させたいのですか? –

関連する問題