Javascript 使函数返回其内部承诺的结果

Javascript 使函数返回其内部承诺的结果,javascript,angular,firebase-realtime-database,promise,Javascript,Angular,Firebase Realtime Database,Promise,我有一个功能: checkIfReadyToUse(){ return this.af.object("/cardReady").query.once("value").then(data => data.val()); } 我想用它来获取cardReady的值。问题是,当我使用该函数时,它会像这样返回,而不是true或false: ZoneAwarePromise {_ _zone_symbol__state: null, _zone_s

我有一个功能:

checkIfReadyToUse(){
 return this.af.object("/cardReady").query.once("value").then(data => data.val());
  }
我想用它来获取cardReady的值。问题是,当我使用该函数时,它会像这样返回,而不是true或false:

ZoneAwarePromise {_
_zone_symbol__state: null, 
_zone_symbol__value: 

如何使其返回cardReady的值而不是此区域符号?

获取承诺的解析值的最佳方法是在
异步
函数中等待它

const resolveTreal=()=>Promise.resolve(true)
const resolveflse=()=>Promise.resolve(false)
;(异步()=>{
if(wait resolvettrue())console.log('this logs')
if(Wait resolveFalse())console.log('这不是')
if(resolveFalse()){
log('此日志,因为我们忘记等待(未等待的承诺是真实的)'))
}

})()
在不知道
data.val()返回什么的情况下,我假设您没有执行
。然后()
等待执行
checkifreadytoose
,因为它也会返回一个承诺

const result = await checkIfReadyToUse()
console.log(result)


根据您是使用
.then()
还是
异步/等待
语法

您可以分享一下如何使用
checkIfReadyToUse
.then(data=>return data.val())
@PatricNox这与他拥有的东西是一样的,只是一种更详细的书写方式this.loyaltyCardReady=this.promotionService.checkIfReadyToUse();像这样是的,看到我的答案了吗?为什么这是最好的方法?我认为没有最好或更糟的。但是语法sugarasync/await的存在是有原因的:没有回调地狱,也没有“永无止境”的承诺链。简而言之:它更容易阅读。@PatricNox首先,它的可读性更高(
。如果你有太多的链,那么
链可以成为“回调地狱”的新版本)。而且,(如果你的透明目标支持的话)。
checkIfReadyToUse().then((result) => console.log(result))