gpt4 book ai didi

javascript - 等待异步函数返回 true 或 false - 如何检查返回值?

转载 作者:行者123 更新时间:2023-11-30 11:03:41 28 4
gpt4 key购买 nike

我有一个异步函数 songAlreadyInQueue 如果在数据库中找到 ID,它将返回 true,否则返回 false。我想使用这样的功能:

if(!songAlreadyInQueue(ref, id)){
// do stuff
}

但我知道,因为它是一个异步函数,所以我必须等待结果返回才能真正知道它是对还是错。我上面的内容总是错误的,所以我尝试了这个:

songAlreadyInQueue(ref, id).then((wasFound) => {
console.log("wasfound = " + wasFound)
if(!wasFound){
//do stuff
}
})

但这也行不通。等待这个异步函数完成的正确方法是什么?这是我的异步函数的样子(简化):

async function songAlreadyInQueue(requestQueueRef, requestID) {
var querye = requestQueueRef.where("id", "==", requestID)
.get()
.then((snap) => {
snap.docs.forEach(doc => {
if (doc.exists) {
console.log("**************FOUND REQUEST IN QUEUE ALREADY!")
return true
}
})
return false
})
return querye // not sure if correct. Is this "returning a promise"?
}

最佳答案

对于异步函数,您应该使用 await 而不是 then(),这样您就不会创建另一个匿名函数。您正在从匿名函数而不是异步函数返回。试试这个。

async function songAlreadyInQueue(requestQueueRef, requestID) {
var snap = await requestQueueRef.where("id", "==", requestID).get()
var found = false;
snap.docs.forEach(doc => {
if (doc.exists) {
console.log("**************FOUND REQUEST IN QUEUE ALREADY!")
found = true
}
})
return found
}

关于javascript - 等待异步函数返回 true 或 false - 如何检查返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56572456/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com