我需要创建一个云功能,启动一个在X分钟后调用另一个云功能的计时器。它应该重复N次,除非它被告知在N到达之前停止。这可能吗?我一直在读你只能使用外部cron作业或app引擎设置定时器?是否有可能做我想做的事情?是否有与此相关的费用?
答案 0 :(得分:4)
云功能没有内置功能。您必须在云功能之上构建一些东西。
每次要安排回调时,都要将任务写入队列。 E.g。
queueRef.push({ timestamp: Date.now() + 5*60*1000, url: "https://mycloudfunctionsurlwithoptionalparameters" });
cron作业触发的功能会检查队列中是否存在之前要触发的项目:
queueRef.orderByChild("timestamp").endAt(Date.now()).once("value").then(function(snapshot) {
snapshot.forEach(function(child) {
var url = child.val().url;
fetch(url).then(function() {
queueRef.child(child.key).remove();
});
});
});
因此,此函数调用指定的URL(使用fetch
),如果调用成功,则从队列中删除该条目。