Я хотел бы знать, возможно ли вернуть данные до того, как моя функция onCall завершит работу sh.
Нет, это невозможно, поскольку возврат данных в функцию вызываемого облака указывает платформе Cloud Functions, что функция Callable Cloud завершена и что она может очистить все от этого вызова. Поэтому во многих случаях ваша облачная функция будет прервана до того, как ваша бизнес-логика c будет полностью выполнена.
В некоторых случаях, может быть , возможно, что Платформа Cloud Functions не прерывает ваш CF сразу, давая достаточно времени для полного выполнения бизнес-логики c, но это совсем не гарантируется. Полагаться на этот конкретный c случай не рекомендуется и фактически приводит к некоторому "errati c" поведению
Один из подходов - немедленно отослать результат обратно во внешний интерфейс и продолжить работа в фоновом режиме заключается в вызове Облачной функции PubSub (со всеми соответствующими входными данными в сообщении), а затем возвращении значения. Другими словами, вы делегируете оставшуюся работу другой облачной функции и останавливаете текущую вызываемую функцию, возвращая ответ.