Итак, вы возвращаете два обещания, что является проблемой, потому что вы разрешаете одно только для создания второго, которого затем ожидает основной поток. Все, что вам нужно сделать, это вернуть обещание, которое дает вам db.collection ...
По сути, проблема в том, что новое обещание, которое вы создаете, не выполняется должным образом. Вы просто говорите, что обещание - это (resolve, reject) => {resolve;}
, что А) даже не является функцией и Б) не будет разрешено. Потому что вы не вызывали функцию разрешения. На самом деле, это обещание никогда не должно было создаваться, потому что оно было совершенно ненужным, поэтому я бы больше беспокоился об обработке обещаний с простыми ожиданиями и возвратами, чем о создании их. TL; DR Не создавайте обещание, если уже существует обещание, которое вы можете использовать.
Этот код должен работать:
function asyncFunc(i)
{
//Here I am updating my database which is the async part of this function
return db.collection("collection").doc("doc").update({
})
.then(() =>{
let d = new Date();
console.log(i + " async COMPLETED at: " + d.getTime());
});
}
async function doWork()
{
var numbers = [1,2,3,4];
for(const i of numbers)
{
var d = new Date();
console.log(i + " async CALLED at: " + d.getTime());
await asyncFunc(i);
}
}
doWork();