Функции Firebase setInterval и clearInterval для отдельных вызовов - PullRequest
0 голосов
/ 30 мая 2018

У меня есть два 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 Ответ

0 голосов
/ 30 мая 2018

То, что вы пытаетесь сделать, невозможно.Каждая функция выполняется в полностью изолированном экземпляре сервера.Они ничего не знают друг о друге и не имеют общего состояния.

Более того, после того, как функция HTTP отправляет ответ, он эффективно завершается и очищается.Вы не можете продолжать работу в этом экземпляре сервера после завершения функции.

Если вам нужно сохранить какое-то состояние в вашей функции, вам следует использовать механизм хранения, такой как База данных реального времени или Firestore.Если вам нужно, чтобы работа продолжалась после завершения функции, вам придется раскрутить другую функцию, обычно через pub / sub.Или вы можете делегировать другому экземпляру сервера, например, App Engine.

...