[英]Angular2 - Promise inside a conditional statement
我需要等待服務器上的答復,以說電子郵件是否已被接收。 但是我正在努力做到這一點。 在我的if語句中,打字稿說isCorrectEmail()是一個無效函數(我可以理解但無法解決)。 任何想法?
isEmailAvailable(){
return new Promise( (resolve, reject) => {
this.authService.checkemail(this.user.email).then(result => {
let res = <any> result;
if (res.code == 0){
resolve(true);
}
else resolve(false);
}, (err) => {
reject(false);
});
});
};
isCorrectEmail(){
this.isEmailAvailable().then( (result) => { return result ; } );
};
checkPersonalInfos()
{
if ( this.isCorrectEmail() == true){...}
..
}
您不能將異步調用轉換為同步調用。
您有兩個選擇:將需要使用結果值的代碼完全移到then
回調中:
checkPersonalInfos()
{
this.isEmailAvailable().then(isAvailable => {
if (isAvailable) { ... }
}
}
或使用async
/ await
語法使其看起來像同步代碼,但請記住,它仍然是異步的,因此其他代碼將在await
期間運行,並且如果從函數返回結果,則將其包裝在Promise()
:
async checkPersonalInfos()
{
if (await this.isEmailAvailable()) { ... }
...
}
您實際上不需要這里的isCorrectEmail()
函數,因為它對結果完全不執行任何操作,但是如果它執行的操作更復雜,所以實際上需要它,則必須返回Promise
:
isCorrectEmail(): Promise<boolean> {
return this.isEmailAvailable().then(result => result);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.