如何在嵌套Promises [duplicate]中返回值

问题描述 投票:1回答:1

尽管我的console.log实际上确实记录了“ XXXXXXXXXXXXXXXXXXXX这是正确的!”,以下代码似乎总是返回false。到控制台。我制作的嵌套承诺链会影响我要解析的返回值吗?

  isAuthenticated(): boolean {
    //verify that front end token is valid on back end

    console.log('localStorage: ' + localStorage.getItem('user'));

    if (localStorage.getItem('user') !== null) {
      this.db.auth.currentUser.getIdToken().then(reply => {
        this.http
          .post('http://localhost:3000/login', { token: reply })
          .toPromise()
          .then(response => {
            if (response['valid'] === 'true') {
              console.log('XXXXXXXXXXXXXXXXXXXX THIS IS TRUE! ');
              return true;       //please just end here and return true... please!
            } else return false;
          });
      });
    } else return false;
  }
javascript typescript asynchronous promise callback
1个回答
0
投票

您需要在“ if”之后添加return :)检查我的示例

 isAuthenticated(): boolean {
    //verify that front end token is valid on back end

    console.log('localStorage: ' + localStorage.getItem('user'));

    if (localStorage.getItem('user') !== null) {
      return this.db.auth.currentUser.getIdToken().then(reply => {
        // The difference from the OP's code is the return here
        return this.http
          .post('http://localhost:3000/login', { token: reply })
          .toPromise()
          .then(response => {
            if (response['valid'] === 'true') {
              console.log('XXXXXXXXXXXXXXXXXXXX THIS IS TRUE! ');
              return true;       //please just end here and return true... please!
            } else return false;
          });
      });
    } else return false;
  }
© www.soinside.com 2019 - 2024. All rights reserved.