如何解决从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?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。