meteor setInterval - 每秒更新一个字符串

时间:2013-04-17 08:23:36

标签: timer push meteor

我正在尝试创建一个计时器,我的javascript文件是:

function timer(){
  var date = new Date();
  Template.pomodoro.timer = function() { return date};
  Template.pomodoro.message = function() { return "test message"};

} 


if (Meteor.isClient) {
      Meteor.setInterval( timer(), 1000 );
}

if (Meteor.isServer) {
  Meteor.startup(function () {
    // code to run on server at startup

  });
}

我想向所有浏览器推送相同的计时器(计算机服务器端),以使它们同步。

模板仅在第一次更新,为什么每秒都不更新?

由于 弗朗西斯

2 个答案:

答案 0 :(得分:4)

以下是客户方面对我有用的内容。我发现通过将当前时间投入到收集中并在客户端上简单地使用该值来将服务器时间推送到客户端是最容易实现的。

if (Meteor.isClient) {
    Template.pomodoro.timer= function () {
        return Session.get("dateval");
    };
    Template.pomodoro.message= function () {
        return "My Message";
    };

    Meteor.setInterval( function () {
        Session.set("dateval",Date());
        console.log(Session.get("dateval")); 
    }, 1000 );
}

答案 1 :(得分:2)

<强>尝试:

if (Meteor.isClient) {
      Meteor.setInterval( function(){timer()}, 1000 );
}

if (Meteor.isClient) {
      Meteor.setInterval( timer, 1000 );
}

这是因为setInterval的第一个参数必须是函数指针,而你使用的是(),这意味着你正在执行函数而不是传递函数。