Функция таймера, вызывающая 2 раза 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);
}

}); /*

новый 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 ответ

Если вы хотите, чтобы он работал только один раз, то вы хотите setTimeout() не setInterval(),

Я не уверен, почему вы видите другое поведение, но это, вероятно, проблема времени, так как оба образца работают для меня вечно. Возможно, проблема в другом месте вашего кода.

Другие вопросы по тегам