我最近对 setInterval 和 clearInterval 进行了很多试验,以创建自己的自定义效果,而我一直在做的事情之一是清除间隔同时远离全局范围的有效方法。我正在尝试通过使用 .promise() 调用 clearInterval() 来提高可读性并探索可能的性能提升(以下是我正在尝试做的示例):
//caller is a collection of elements
function performEffect(caller) {
var interval = setInterval(function() { caller.next(); }, 500);
caller.promise().done(function() { interval = clearInterval(interval); });
}
直到最近,我一直在使用嵌入式函数设置和清除间隔(示例):
function performEffect(caller) {
var interval;
var count = 0;
var len = caller.length;
if (count >= len) {
interval = clearInterval(interval);
}
var tmr = function () {
interval = setInterval(function () { effectFunciton(count++); }, 100);
}
}
PS 我很抱歉没有发布原版 - 我的版本控制系统已损坏。另外,我知道这个例子有点傻,因为我可以很容易地使用 for 循环或 .each(),但这只是一个例子——我确实有一些我不想使用循环的实例。
这是我的第一篇文章,所以如果我做的事情与公认的做法不同,我会提前道歉。请让我知道我将来是否可以做些什么来改进我的帖子——我总是乐于接受建设性的批评:)
谢谢!