定时器功能调用2次javascript和enyo

时间:2015-09-16 14:13:34

标签: javascript enyo

> var index=0;
enyo.kind({
name:"Kapping",
events: {
    onBeat: ""
},
create : function(){
    this.inherited(arguments);
    this.timer = window.setInterval(enyo.bind(this,"beat"),1000);
},
destroy : function(){
    if(this.timer != undefined){
        window.clearInterval(this.timer);
    }
    this.inherited(arguments);
},
beat: function(){
    this.doBeat({
        //this.fetch();
    });
    index = index+1;
    console.log('Doing beat ' + index);
}

}); / *

new Kapping()。renderInto(document.body);

其中beat函数被调用2次。 另一个是

> var i =0;
enyo.kind({
name:"Heartbeat",
events: {
    onBeat: ""
},
create : function(){
    this.inherited(arguments);
    this.timer = window.setInterval(enyo.bind(this,"beat"),1000);
},
destroy : function(){
    if(this.timer != undefined){
        window.clearInterval(this.timer);
    }
    this.inherited(arguments);
},
beat: function(){
    this.doBeat({
    });
    i=i+1;
    console.log("In timer callback " + i);
}
});

new Heartbeat().renderInto(document.body);

在此beat函数中只调用一次。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

如果您希望它只运行一次,那么您希望setTimeout()不是setInterval()

我不确定为什么你会看到不同的行为,但这可能是一个时间问题,因为这两个样本对我来说都是永远的。也许你的代码中的其他地方存在问题。