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))