firebase - 发送响应后继续执行(Cloud Functions for Firebase)

标签 firebase google-cloud-functions

我正在使用带有 https 触发器的 Firebase 函数,我想知道向客户端发送响应后多久,函数会继续执行。我想向客户端发送响应,然后执行另一个操作(发送邮件)。 目前我正在这样做:

module.exports.doSomeJob = functions.https.onRequest((req, res) => {
    doSomeAsyncJob()
    .then(() => {
        res.send("Ok");
    })
    .then(() => {
        emailSender.sendEmail();
    })
    .catch(...);
});

上面的代码对我有用,但我怀疑该代码之所以有效,是因为发送邮件在 res.send 完成之前就已经完成,所以我想知道终止过程到底是如何工作的,以确保代码不会中断。

最佳答案

您应该预料到 HTTP 函数会在您发送响应后立即终止。任何其他行为都是运气或竞争条件的某种组合。不要编写依赖运气的代码。

如果您需要在工作完全完成之前向客户端发送响应,您将需要启动第二个函数以从 HTTP 函数停止的地方继续。使用 pub/sub 函数来处理是很常见的。让 HTTP 函数向另一个函数发送发布/订阅消息,然后仅在消息发送后终止 HTTP 函数(通过发送响应)。

关于firebase - 发送响应后继续执行(Cloud Functions for Firebase),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49746980/

相关文章:

android - 使用 firebase auth 的 Flutter 应用程序中出现 Google Sign_in_failed 错误

php - Firebase:如何使用相同的自定义 token 从不同环境(JS 和 iOS)进行身份验证?

javascript - Firebase - 如何从节点中删除单个数据而不删除整个节点

android - 模拟器上未收到 Firebase 消息

node.js - 如何在 Node js 中加载 Firebase 管理 key ?

node.js - 我正在使用 Node.js 编写云函数,并且我想检查具有两个值(或条件)的单个字段

android - 基本 Firebase 数据库保存

node.js - Firebase 的云函数 : accessing BigQuery not working

firebase - Firestore 事务多次触发导致错误数据

javascript - 客户不是在 Stripe 帐户上创建的