2017-07-10 92 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

看來你的功能1()做一個異步調用的數據設定了這一點。變量。如果是這種情況,則必須等待異步函數完成後再移至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請求的本質是異步的。你爲什麼希望它是同步的? –