Javascript 显示一个接一个的倒计时

Javascript 显示一个接一个的倒计时,javascript,meteor,timer,Javascript,Meteor,Timer,我正试图在第一次倒计时结束后显示第二次倒计时。我用的是流星。这是计时器: sec = 5 @timer = setInterval((-> $('#timer').text sec-- if sec == -1 $('#timer').fadeOut 'fast' sec= timer return ), 1000) 这就是我所说的 当呈现模板时,我调用setTimeout并显示倒计时 Template.selector.rendered = ->

我正试图在第一次倒计时结束后显示第二次倒计时。我用的是流星。这是计时器:

sec = 5
@timer = setInterval((->
  $('#timer').text sec--
  if sec == -1
    $('#timer').fadeOut 'fast'
    sec=
    timer
  return
), 1000)
这就是我所说的 当呈现模板时,我调用setTimeout并显示倒计时

Template.selector.rendered = ->
  window.setTimeout(startGame, 5000)
  timer
当比赛开始时,我需要第二次倒计时。我是这样处理的:

sec = 5
sw = 0
@timer = setInterval((->
  $('#timer').text sec--
  if sec == -1
    if sw == 0
      sw = 1
      sec = 20
    else if sw == 1
  clearInterval timer
  return
), 1000)

但是必须有更好的方法。

如果你计划使用许多计时器,你可以制作一个目标来实现这一点。以下是一个示例,您可以根据自己的情况对其进行调整:

ReactiveTimer = (function () {

    // Constructor
    function ReactiveTimer(interval) {
        this._dependency = new Tracker.Dependency;
        this._intervalId = null;

        if(_.isFinite(interval))
            this.start(interval);

    };

    ReactiveTimer.prototype.start = function(interval){
        var _this = this;

        this._intervalId = Meteor.setInterval(function(){
            // rerun every "interval"
            _this._dependency.changed();
        }, 1000 * interval);
    };

    ReactiveTimer.prototype.stop = function(){
        Meteor.clearInterval(this._intervalId);
        this._intervalId = null;
    };

    ReactiveTimer.prototype.tick = function(){
        this._dependency.depend();
    };

    return ReactiveTimer;
})();