Ошибка, которую вы делаете здесь, заключается в том, что обратный вызов, который вы передаете forEach, не должен быть помечен как асинхронный.Все асинхронные функции немедленно возвращают обещание, которое разрешается, когда все остальные ожидаемые асинхронные работы в функции завершены.Это означает, что forEach собирается быстро выполнить все эти обещания , не дожидаясь их разрешения .После завершения итерации асинхронная работа внутри каждого обратного вызова будет завершена.Это не совсем то, как вы хотите использовать forEach.
Если вы хотите выполнить некоторую асинхронную работу для каждого снимка документа и собрать результаты всей этой асинхронной работы, вы должны вместо этого выполнить итерацию массива документов в objectSnapshot.docs
.Затем вы можете выполнить дополнительную асинхронную работу для каждого документа.Идиоматически для JavaScript, используйте функцию массива map()
, чтобы преобразовать массив снимков документа в массив обещаний.Затем вы можете использовать Promise.all()
в этом массиве обещаний, чтобы дождаться завершения всей работы.