javascript - Firebase 函数 setInterval 和 clearInterval 分别调用
问题描述
我有两个 API,第一个是 start setInterval,第二个是 clearInterval。当然第二个 API 不起作用,但是如何使它起作用呢?据我了解,没有可以分配 setInterval 的全局变量。有任何想法吗?
let glob = 0;
let timer = null;
exports.start = functions.https.onRequest((req, res) => {
if(timer){
}else {
queueFunction();
}
res.status(status).send(mes);
});
});
exports.stop= functions.https.onRequest((req, res) => {
if(timer){
clearInterval(timer);
}else {
}
res.status(status).send(mes);
});
});
function queueFunction() {
timer = setInterval(timerFunc, 3000);
}
function timerFunc(){
glob++;
}
解决方案
你试图做的事情是不可能的。每个函数都在一个完全隔离的服务器实例中运行。他们对彼此一无所知,也没有共享状态。
此外,在 HTTP 函数发送响应后,它会被有效地终止和清理。函数终止后,您无法在该服务器实例中继续进行正在进行的工作。
如果您需要在函数中保留某些状态,则应使用实时数据库或 Firestore 等存储机制。如果您需要在函数终止后继续工作,则必须启动另一个函数,通常通过 pub/sub。或者,您可以委托给另一个服务器实例,例如 App Engine。
推荐阅读
- node.js - 具有反应路由器和 nodejs 的项目中的 CSP 问题
- azure-devops - 通过 ADF 触发 Azure Devops 管道
- angular - 更改文本和颜色离子按钮
- python - 即使在导入 numpy 后也无法在 Python 中使用 dtype?
- javascript - 我在 JS 中的条件在我的函数中不起作用
- c# - 如何在 asp.net c# 中清理和验证用户输入以通过 Checkmarx 扫描
- frontend - 保存时未编译 HTML、SCSS - Angular 11.0.2
- python - 互联网断开连接上的 Paho mqtt 未运行回调
- javascript - Svelte 应用程序在第一次启动时显示空白页
- apache-nifi - 如何导入 NiFi_Flow.json 或转换为模板?