从promise返回布尔值

时间:2020-10-09 19:21:48

标签: javascript typescript es6-promise

我想从诺言中获得布尔值。

方法一

get tokenValid(): Promise<Boolean> {
return new Promise((resolve, reject) => {
  this.storage.get('expiresAt')
    .then((expiresAt) => {
      resolve(Date.now() < expiresAt);
    })
    .catch((err) => {
      reject(false);
    });
  });
}

方法二

get tokenValid(): Promise<Boolean> {
return new Promise((resolve, reject) => {
  this.storage.get('expiresAt')
    .then((expiresAt) => {
      resolve(Date.now() < expiresAt);
      return Promise.resolve(true); // difference is here
    })
    .catch((err) => {
      reject(false);
      return Promise.reject(false); // difference is here
    });
  });
}

一个两个是相似的。区别在于方法 Two 中存在返回语句true或false。要获取值,只需将方法调用为

if(this.tokenValid()) {
    console.log('return true');
} else {
    console.log('return false');
}

更新:

通过评论,我将方法修改为

方法三

get tokenValid(): Promise<Boolean>() => new Promise((resolve, reject){
     this.storage.get('expiresAt')
    .then((expiresAt) => {
      resolve(Date.now() < expiresAt);
    })
    .catch((err) => {
      reject(false);
    });
 }

要获取值,只需将方法调用为

if(this.tokenValid()) {
    console.log('return true');
} else {
    console.log('return false');
}

我知道我必须使用.then()。但是为什么我的方法总是返回true?

0 个答案:

没有答案