gpt4 book ai didi

javascript - 每天更改一次调用函数

转载 作者:行者123 更新时间:2023-11-30 10:12:02 24 4
gpt4 key购买 nike

我有一个非常简单的问题,但我似乎无法弄清楚。我使用 AngularJS 和 Firebase 作为后端。

基本上,我有一个函数,我想在每天午夜运行一次,以便进行值重置(将某些对象属性设置为 false 等)。该函数在我手动运行时运行良好,并且完全按预期运行。

但是,我似乎无法让它在换日时自动运行。

我想在午夜运行的函数是 Fed.newDay(),每天一次。它通过 Fed 工厂注入(inject)到我的 Dte 工厂 - 它保持一个包含星期几、月份等的更新对象。

目前,在我的 Dte 工厂中,我有以下对象:

var date = new Date();    

var Dte = {

currentDate: function() {
ref.update({date: date.getDate()});

ref.on('child_changed', function(snapshot) {
console.log('Dte registered new Day');
Fed.newDay();
});

return date.getDate();
},
}

此处的目标是每次日期更改时运行一次 Fed.newDay()。我已将日期存储在 Firebase 中,如下所示: harrison -> date -> date: 23

我的假设是,每次在服务器上更新日期时,该函数都会基于 Firebase 的 ref.on('child_changed')... 方法运行。当我手动 .set 值时,该函数按预期运行,但不会在自动日期更改时过夜运行。

我还尝试使用 setIntervalsetTimeout 每 86400000 毫秒(1 天)运行一次函数。不过,我认为当应用程序未运行时这些不会运行。

这里一定有我忽略的东西。感谢您的宝贵时间和帮助。

更新:

只是为了澄清。

这就是我想要做的:

我有两个复选框,用于标记需要由一组人(用户)完成的任务。这两项任务只需要由任何一个用户每天一次完成一次。那天结束后,我想清除它们的值(将它们设置为 false),以便同一个人或不同的人可以选中两个框中的任何一个。

我没有运行服务器,我只使用 Firebase。 Firebase 有一个我可以访问的值,只要那天有人使用该应用程序,该值当前就会更新该月的某一天。

解决方法:

感谢@bmceldowney 的帮助。

这是我得出的解决方案。另外,请看下面的正确答案,以避免在 11:59 多个用户登录时可能出现的问题。

    var Dte = {

currentDate: function() {
dateRef.update({date: date.getDate()});
return date.getDate();
},

setLastUpdated: function(day) {
dateRef.set({lastUpdated: day});
},

compareReset: function(last) {
var current = Dte.currentDate();
if (last !== current) {
Fed.newDay();
Dte.setLastUpdated(current);
} else {
console.log('no reset needed');
}
},

load: function() {
dateRef.on('value', function(snapshot) {
if (snapshot.val() != null) {
var data = snapshot.val();
var updateValue = data['lastUpdated'];
Dte.compareReset(updateValue);
} else {
Dte.load();
}
})
},

最佳答案

您可以在 firebase 中存储一个 lastUpdated 字段。在客户端加载时,获取 lastUpdated 的值并将其与当前日期进行比较。如果不同,请运行您的 Fed.newDay 方法并更新 lastUpdated 日期。

编辑:

正如 TheSharpieOne 在评论中指出的那样,如果客户端已在午夜敲响时登录,您将需要运行某种计时器功能以确保您获得适当的行为。这会让您面临潜在的竞争条件,如果当时有多个用户登录,可能会导致 Fed.newDay 被多次调用。如果没有合适的服务器来适本地管理状态,这些类型的问题几乎是不可能解决的。

关于javascript - 每天更改一次调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26001847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com