我是Ionic2的新手,我不太瞭解異步編程是如何工作的。Ionic2從Http請求中返回一個值並將其分配給變量
我希望函數checkLogin()
返回0或1的值,但是,它會返回下面的結果。我如何讓變量this.isLoggedIn
被賦予我想要的值?
任何意見或建議,將不勝感激。
預先感謝您。
提供商
checkLogin() {
var url = this.app.URL + 'api/program/information';
var isLoggedIn;
return this.http.get(url).map(res =>res.json()).subscribe(logininfo =>{
if (!logininfo.data.information.is_logged_in) {
isLoggedIn = 0;
} else {
isLoggedIn = 1;
}
return isLoggedIn;
})
}
home.ts
ionViewWillEnter() {
this.isLoggedIn = this.globalVar.checkLogin();
console.log(this.isLoggedIn);
}
謝謝你的建議。我想返回簡單值的原因是我有'checkLogin()'每個選項卡,所以我不想每次重複訂閱部分。有什麼辦法可以返回簡單的值,如0或1? – smchae
嘿。爲此我嘗試了一些東西。在最大值時,您可以將'isLoggedIn'的邏輯轉換爲通用的'checkLogin()'方法。但是,'.subscribe()'將不會有任何替代方法從一個調用方法將更新我的答案。 –
更新了我的答案。另外,由於這是異步的,我認爲這就是你將不得不等待事件完成的原因。 –