Функция таймера, вызывающая 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()
,
Я не уверен, почему вы видите другое поведение, но это, вероятно, проблема времени, так как оба образца работают для меня вечно. Возможно, проблема в другом месте вашего кода.