Функции 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++;
}
1 ответ
То, что вы пытаетесь сделать, невозможно. Каждая функция выполняется в полностью изолированном экземпляре сервера. Они ничего не знают друг о друге и не имеют общего состояния.
Кроме того, после того, как функция HTTP отправляет ответ, он эффективно завершается и очищается. Вы не можете продолжать работу в этом экземпляре сервера после завершения функции.
Если вам нужно сохранить какое-то состояние в вашей функции, вы должны использовать механизм хранения, такой как База данных реального времени или Firestore. Если вам нужно, чтобы работа продолжалась после завершения функции, вам придется раскрутить другую функцию, обычно через pub/sub. Или вы можете делегировать другому экземпляру сервера, например, App Engine.