清除间隔不起作用(尝试所有其他答案)

时间:2013-03-07 15:58:36

标签: javascript jquery

所以我有这个功能来检查对手何时连接。一切正常,除了clearInterval之外......我尝试添加window.setInterval和window.clearInterval。我尝试添加自我。太...

$(document).ready(function() {

    var waitForOpponent = setInterval(checkUserStatus, 2000);

    function checkUserStatus() {
    $('#user').load('checkuser.php?randval='+ Math.random());
        $("#user").ajaxStop(function(){
       if(document.getElementById("user").innerHTML!=""){
                clearInterval(waitForOpponent);
        opponentConnected();
       }
    });
    }

});

我也试过这样:

var waitForOpponent;

function check() { waitForOpponent = setInterval(checkUserStatus, 2000); }

check();

请帮帮我们......我尝试了一切......

1 个答案:

答案 0 :(得分:2)

摆脱ajaxStop并使用.load的成功回调。

$('#user').load('checkuser.php?randval='+ Math.random(),function(){
    if(document.getElementById("user").innerHTML!=""){
        clearInterval(waitForOpponent);
        opponentConnected();
    }
});

如果请求的持续时间超过2秒,则永远不会调用ajaxstop。

我认为更好的选择是不使用setInterval:

function checkUserStatus() {
    $('#user').load('checkuser.php?randval='+ Math.random(),function(){
        if(document.getElementById("user").innerHTML!=""){
            opponentConnected();
            return; // exit
        }
        setTimeout(checkUserStatus,2000); // continue after 2 seconds
    });
}
checkUserStatus(); // start it up

这可以防止ajax请求堆积在慢速连接或超时上。

相关问题