#google-cloud-functions
#google-cloud-функции
Вопрос:
Я не был уверен, что искать, поскольку я не знаю, к какому предмету это подходит.
То, что я имею в виду, похоже на JS Promise.all ([…]).then(), но для облачных функций.
Например. функция A зависит от успешного завершения функций B и C, которые не знают друг о друге и выполняются одновременно.
Я предполагаю, что что-то подобное недоступно изначально?
Единственное, о чем я могу думать, если это сохранение какого-то постоянного регистра и промежуточной функции, которая запускается при завершении как B, так и C и проверяет, завершила ли группа, и запускает A, когда они завершили.
Ответ №1:
Это невозможно только с облачными функциями. Система не имеет состояния — нет «памяти» о том, что происходит при каждом вызове функции.
Что вам нужно было бы сделать, так это задействовать другой продукт для сохранения состояния, которое отвечало бы за запуск третьей функции после завершения первых двух. Один из способов реализовать это — использовать документ Firestore для хранения статуса завершения каждой функции. Функции B и C должны будут согласовать некоторый общий уникальный идентификатор, который идентифицирует их работу. Этот идентификатор можно использовать как идентификатор документа в коллекции, в которой хранится состояние завершения каждой функции — функции должны были бы записать свой статус в этот документ перед завершением. Затем вы могли бы написать триггер Firestore, который вызывается при изменении документа в этой коллекции. Затем функция проверит документ, чтобы увидеть, завершены ли B и C, и обработает для запуска A.
Комментарии:
1. Я подозревал об этом, но недостаточно знал о GCP. В любом случае спасибо.