так что вы почти там. Проблема в том, что вы ничего не возвращаете. Вы должны исправить это, просто выполнив:
Обещание возврата
// code ...
exports.sendEmail = functions.pubsub.topic('nightly_topic').onPublish(() => {
// code
return init();
}
Использовать асинхронно
// code ...
exports.sendEmail = functions.pubsub.topic('nightly_topic').onPublish(async () => {
// code
await init();
}
Примечание: асинхронная функция всегда возвращает Promise.
Предложение
В своем коде вы отправляете электронные письма по одному. await send(email.address);
Эта строка кода ожидает отправки электронного письма, а затем отправляет следующее, что неэффективно.
Мое предложение - отправлять все электронные письма одновременно и возвращать обещание, которое разрешается при отправке каждого электронного письма. Это должно выглядеть примерно так:
//change this
for (const email of emailsToSend) {
await send(email.address);
}
// --------------into this--------------------------------
//This is an array of promises
const promises = emailsToSend.map(email => {
return send(email.address);
});
await Promise.all(promises);
Надеюсь, это поможет:)