在这种情况下,如何使用javascript cleanTime?

在这种情况下,如何使用javascript cleanTime?,javascript,jquery,Javascript,Jquery,我需要清除超时,但我不知道如何清除。我不确定从窗口对象传递clearTimeout方法的内容。。。有什么建议吗 for (var k = 0; k <= arr2.length; k++) { (function (k) { window.setTimeout(function () { //do something

我需要清除超时,但我不知道如何清除。我不确定从窗口对象传递clearTimeout方法的内容。。。有什么建议吗

                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除非它们在变量中被引用,并且您可以访问变量的作用域,否则我认为您不能。