У меня есть облачная функция, где я передаю массив чисел и сравниваю эти числа с коллекцией в пожарном депо.И если числа присутствуют, то возвращают массив с этими числами.Но перед сравнением этих чисел функция возвращает пустое значение в обещании.
Я пытался использовать async await, но последовательность выполнения осталась прежней.
// сортировать список контактов
export const addMessage= functions.https.onCall(async (data:any, context) => {
const col=admin.firestore().collection("joshua");
var match:[]
match=data.list
var perm1=new Array()
res11.push("454675556")
console.log("above resolve")
for(let val in match){
var inter=await Promise.all([getValues(col,val)])
console.log("inside resolve"+inter)
}
perm1.push("23432")
console.log("just before resolve")
return new Promise((res,rej)=>{
res(perm1)
})
});
//the async function which is suppose to process on every iteration
function getValues(col1:any,val1:any)
{
return new Promise(async(res,rej)=>{
var query= await col1.where('Listed','array-contains',val1)
var value=await query.get()
res(value)
})
.catch(err=>{
console.log(err)
})
}
Я хочу, чтобы последовательность была асинхронной, когда ожидается возвращаемое значение из getValues, а внутри getValues ожидается результат query.get.так что, наконец, возврат будет отправлен только после завершения всего процесса.