setTimeout连续循环,无需等待

Cur*_*ewe 1 html javascript ajax

我试图让setTimeout在15秒后重新运行它内部的函数,它不会等待15秒并且只是在一个恒定循环中执行它.

这是我目前的代码

function checkSession(x) {
http.abort();
http.open("GET", siteURL+"processes/ajax.php?call=check_session&string="+x+"&new="+Math.random(), true);
http.onreadystatechange = function() {
    if(http.readyState == 4) {
        if(http.responseText == true) {
            updateSession(x);
        } else {
            setTimeout(checkSession(x),15000);
        }
    }
}
http.send(null);
}
Run Code Online (Sandbox Code Playgroud)

我没有看到代码本身有任何问题,唯一不对的是它只是在不等待"15000"毫秒的情况下进行一个恒定的循环.

ic3*_*3rg 9

将setTimeout调用更改为:

setTimeout(function(){checkSession(x)},15000);
Run Code Online (Sandbox Code Playgroud)

正如你现在所做的那样,立即调用checkSession,然后作为参数传递给setTimeout.将其包含在函数内部允许延迟调用.