我有一個非常直接的問題,我似乎無法弄清楚。我使用AngularJS和Firebase作爲後端。每天更換一次通話功能
基本上,我有一個函數,我想運行一次,每天,在午夜爲了做一個值重置(設置一些對象屬性爲false等)。該功能工作正常,當我手動運行並按照預期工作。
但是,我似乎無法讓它在日更改中自動運行。
我想在午夜運行的功能,每天一次是Fed.newDay()
。它通過Fed
工廠注入到我的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()
。我已經存儲在火力地堡的日期如下: harrison -> date -> date: 23
我的假設是,每一個日期是在服務器上更新時間,該功能將運行基於火力地堡的ref.on('child_changed')...
方法。當我手動設置該值時,該功能按預期運行,但不會在自動更改日期過夜。
我也試過使用setInterval
和setTimeout
每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();
}
})
},
你想要午夜本地用戶時間,還是午夜格林尼治標準時間? – TheSharpieOne 2014-09-23 18:09:06
午夜本地用戶時間,GMT-6,CST。 – Himmel 2014-09-23 18:11:52
你說'setInterval'不是一個選項,因爲當應用程序沒有運行時它們不會運行。這對於在客戶端上運行的任何解決方案都是一個問題。 – bmceldowney 2014-09-23 18:13:56