Firebase触发当前时间

时间:2014-01-02 12:41:11

标签: firebase

我用事件创建日历。 我希望在事件发生时为用户弹出消息。

我的解决方案:

//this code runs in loop
var offsetRef = new Firebase("https://example.firebaseio-demo.com/.info/serverTimeOffset");
offsetRef.on("value", function(snap) {
    var offset = snap.val();
    var estimatedServerTimeMs = new Date().getTime() + offset;
    fbRef.endAt(estimatedServerTimeMs).once("value", function(ss) {/*remove old events*/});
});

这样的事情是否可能(没有循环)?

fbRef.endAt(Firebase.ServerValue.TIMESTAMP).on("child_added", function(snap) {/*...*/});

感谢您的回复

1 个答案:

答案 0 :(得分:0)

最好只计算一次serverTimeOffset,然后在知道当前时间(大约)之后将弹出窗口包装在setTimeout中:

var timeouts = [];
offsetRef.on("value", function(snap) {
  // Cancel all previous timeouts.
  timeouts.forEach(function(i) { clearTimeout(i); });
  var estTime = new Date().getTime() + snap.val();
  var promptTime = /* Get time at which you want to prompt */
  timeouts.push(setTimeout(function showPrompt() {
    ...
  }, promptTime));
});