我正在使用带有 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/