在这种情况下,如何使用javascript cleanTime?
我需要清除超时,但我不知道如何清除。我不确定从窗口对象传递clearTimeout方法的内容。。。有什么建议吗在这种情况下,如何使用javascript cleanTime?,javascript,jquery,Javascript,Jquery,我需要清除超时,但我不知道如何清除。我不确定从窗口对象传递clearTimeout方法的内容。。。有什么建议吗 for (var k = 0; k <= arr2.length; k++) { (function (k) { window.setTimeout(function () { //do something
for (var k = 0; k <= arr2.length; k++) {
(function (k) {
window.setTimeout(function () {
//do something
}, 6000 * k);
})(k);
}
for(var k=0;k如果要使超时可取消,必须捕获其返回值
var myTimer = setTimeout(...);
然后,只需将该值传递给函数:
clearTimeout(myTimer);
我个人会重写:
(function(inp) {
var k = 0, l = inp.length, timer;
timer = setInterval(function() {
// do something with inp[k];
k++;
if( k > l) clearInterval(timer);
},6000);
})(arr2);
某些浏览器(特别是Firefox)对一次运行过多超时的反应很差。如果要使超时可取消,必须捕获其返回值
var myTimer = setTimeout(...);
然后,只需将该值传递给函数:
clearTimeout(myTimer);
我个人会重写:
(function(inp) {
var k = 0, l = inp.length, timer;
timer = setInterval(function() {
// do something with inp[k];
k++;
if( k > l) clearInterval(timer);
},6000);
})(arr2);
某些浏览器(尤其是Firefox)对一次运行过多超时的反应很差。因为您正在创建arr2.length
计时器的数量,如果您需要“杀死”特定计时器,则需要一组引用
//create a reference storage
var timerRefs = [];
for (var k = 0; k <= arr2.length; k++) {
(function (k) {
//reference the timeout to a variable
var ref = window.setTimeout(function () {
//do something
}, 6000 * k);
//store that reference in the array
timerRefs.push(ref);
})(k);
}
由于您正在创建arr2.length
amount计时器,如果需要“杀死”特定计时器,则需要一个引用数组
//create a reference storage
var timerRefs = [];
for (var k = 0; k <= arr2.length; k++) {
(function (k) {
//reference the timeout to a variable
var ref = window.setTimeout(function () {
//do something
}, 6000 * k);
//store that reference in the array
timerRefs.push(ref);
})(k);
}
顺便说一句,我确实需要“顺便说一句,我确实需要”太棒了,有没有办法从窗口对象中找出所有打开超时并释放它们?我会应用你的解决方案,但我只是想知道,thanks@EdwinSnts除非它们在变量中被引用,并且您可以访问变量的作用域,否则我认为您不能。太棒了,有没有办法从窗口对象并释放它们?我将应用您的解决方案,但我只是想知道,thanks@EdwinSnts除非它们在变量中被引用,并且您可以访问变量的作用域,否则我认为您不能。