簡體   English   中英

Angular2-條件語句中的Promise

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM