Firebase在单独的调用中运行setInterval和clearInterval

时间:2018-05-30 05:43:07

标签: javascript node.js firebase google-cloud-functions setinterval

我有两个API,第一个是启动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 :(得分:2)

你想要做的是不可能的。每个函数都在完全隔离的服务器实例中运行。他们对彼此一无所知,也没有共享状态。

此外,在HTTP函数发送响应后,它会被有效终止并清除。在函数终止后,您无法在该服务器实例中继续进行工作。

如果需要在函数中保留某些状态,则应使用实时数据库或Firestore等存储机制。如果在函数终止后需要工作似乎继续,则必须启动另一个函数,通常是通过pub / sub。或者您可以委托给另一个服务器实例,例如App Engine。