我不明白为什么MC.caro.myTimer()
在页面加载上运行,它是一个变量。那么如果没有我的话,它会如何运行呢。
我认为这可能与我的自动执行功能有关?
var MC = {};
(function($){
"use strict";
MC.init = function (){
//disable to turn off carousel
MC.caro.init();
};
MC.caro = {
init: function(){
//Build carousel for us to use
MC.caro.build();
//Bind click events to buttons
$('.mc-carousel--nav--buttons').on('click','li',function(){
MC.caro.advance($(this));
//stop the current ticking
MC.caro.stopMyTimer();
//Start up movement after 15seconds
setInterval(function(){MC.caro.myTimer()},10000);
console.info('running');
});
},
build: function(){
MC.caro.jsonRun(function(){
console.info('running1');
});
},
myTimer: function(){
console.info('running2');
MC.caro.advance(nextItem,'slow');
},
//Sets up the timer
timer:setInterval(function(){MC.caro.myTimer()},5000),
stopMyTimer: function(){
clearInterval(MC.caro.timer);
}
}
})(jQuery);
MC.init();
还有另一个问题:
当我点击$('.mc-carousel--nav--buttons').on('click','li',function(){
时,代码将等待15秒然后运行。正如所料。但是如果我真的很快点击它5次就会等待那15秒,然后在完全相同的时间内运行并点击我的命令,这意味着MC.caro.stopMyTimer();
在我的点击事件中被调用不起作用。
此外,这不是完整的代码,我不能把它放入小提琴中,因为它对内联网有很大的依赖性。
所以你无法看到一个有效的例子。
答案 0 :(得分:1)
您将其设置为setInterval
timer: setInterval(function(){MC.caro.myTimer()},5000),
立即对此进行评估。
答案 1 :(得分:1)
我认为@JamieHutber是正确的;立即计算setInterval并将其分配给timer属性。
尝试:
timer: function() {
setInterval(function(){MC.caro.myTimer()},5000);
}
通过计时器()启动计时器。如果您要求将其分配给变量,则:
timer: function() {
this._timer = setInterval(function(){MC.caro.myTimer()},5000);
}
HTH