Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript clearTimeout中有多个超时_Javascript - Fatal编程技术网

Javascript clearTimeout中有多个超时

Javascript clearTimeout中有多个超时,javascript,Javascript,我有ajax在我的站点中加载页面,但这些页面包含某些脚本,包括超时 如果用户进入页面并通过进入此循环退出,则页面超时尚未完成执行,导致多次超时(并且超时有一个循环再次执行) 这是我的代码: //"REMOVE" IF TIMEOUT IS RUNNING var timer1; var timer2; var timer3; if (timer1 !== undefined) { clearTimeout(timer1); timer1 = ''; } if (timer2

我有ajax在我的站点中加载页面,但这些页面包含某些脚本,包括超时

如果用户进入页面并通过进入此循环退出,则页面超时尚未完成执行,导致多次超时(并且超时有一个循环再次执行)

这是我的代码:

//"REMOVE" IF TIMEOUT IS RUNNING
var timer1;
var timer2;
var timer3;

if (timer1 !== undefined) {
    clearTimeout(timer1);
    timer1 = '';
}

if (timer2 !== undefined) {
    clearTimeout(timer2);
    timer2 = '';
}

if (timer3 !== undefined) {
    clearTimeout(timer3);
    timer3 = '';
}

//LOOP WHEN PAGE LOADS
Loop();

function Loop() {
    var randTimeout1 = Math.round(Math.random() * (100)) + 40;

    timer1 = setTimeout(function () {
        //EXECUTE ONE FUNCTION

        var randTimeout2 = Math.round(Math.random() * (100)) + 40;

        timer2 = setTimeout(function () {
            //EXECUTE ANOTHER FUNCTION

            var randTimeout3 = Math.round(Math.random() * (100)) + 45;

            timer3 = setTimeout(function () {
                //EXECUTE ANOTHER FUNCTION

                var rand = Math.round(Math.random() * (3000 - 200)) + 6500;
                setTimeout(function () { /*EXECUTE LOOP AGAIN */ Loop(); }, rand);

            }, randTimeout3);

        }, randTimeout2)

    }, randTimeout1)
}
但是删除注释下面的代码

清除超时


超时内的超时不起作用

只需对这些变量调用clearTimeout而不进行检查。您可以在
循环
函数的开头调用
clearTimeout
,我相信您的clearTimeout是在页面加载时执行的。你需要在页面转换时执行它们。Ivan Cherviakov解决方案解决了我的问题,谢谢。