我正在使用云函数构建一个快速服务器,但我遇到了res.send()
的问题。 在普通的快速服务器中,我可以在res.send()
后执行一些代码,但是在我的快速服务器上,使用 Firebase cloudFunctionsres.send()
关闭了我的连接,之后我无法执行任何内容。
这是我需要做的: 在我的服务器中,我有一个端点可以从 Slack api 对话框接收一些数据,之后 Slack API 正在等待空响应res.send()
,所以我需要发送它。 但我还需要将这些数据保存在我的数据库中,并在 slack 中向我的用户发送一条消息"您的帖子已保存!所以我的端点做什么:
async function myEndpoint(req, res) {
await savePayload(req.payload);
await sendUserMessage(req.payload);
res.send('');
}
但有时res.send()
需要很长时间才能开始运行,并且在 slack 上出现错误,所以我想做这样的事情:
async function myEndpoint(req, res) {
res.send('');
await savePayload(req.payload);
await sendUserMessage(req.payload);
}
但正如我所说,res.send('')
后我的连接将关闭,下一行不会运行。你知道我该怎么解决这个问题吗?
HTTP 函数在响应完成后立即终止执行 - 这是 Cloud Functions 的基本架构,因此没有办法绕过它。您将需要:
- 优化代码路径,以便始终在截止时间内发送空响应,或者
- 触发将异步执行工作的后台函数执行,然后响应。这可以通过例如写入Cloud Firestore或发送发布/订阅消息来完成