У меня есть асинхронная функция songAlreadyInQueue
, которая будет возвращать 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"?
}