Хорошо, поэтому, основываясь на вашем комментарии, вот обновленный ответ.
Вам нужно связать свои обещания, и вам не нужно использовать Promise.all()
- эта функция используется для набора асинхронных задач, которые все должны выполнить (параллельно), прежде чем вы предпримете следующее действие.
Ваше решение должно выглядеть следующим образом:
admin.database().ref(`/photos/${photoID}`).once('value')
.then(dataSnapshot => {
// Extract your data here
const key = dataSnapshot.val().ownerKey;
// Do your other stuff here
// Now perform your next query
return admin.database().ref(`/users/${key}/notificationTokens`).once('value');
})
.then(tokenSnapshot => {
// Here you can use token Snapshot
})
.catch(error => {
console.log(error);
});
Поскольку ваш второй сетевой запрос зависит от выполнения первого, объедините ваши обещания, добавив второй .then()
после вашего первого и донне заканчивайте его точкой с запятой ; .Если новое обещание, созданное в первой области действия .then()
, разрешится, оно вызовет вторую функцию .then()
.
Если вам необходимо получить доступ к переменным из первой области .then()
во второй, то вы должны объявить их в общей функции и назначить их в области замыкания.
Более подробную информацию о цепочке обещаний вы можете посмотреть здесь .