中止调用“ complete:”回调

TheNiceGuy

我有以下代码:

    $(function() {
        (function poll(){
            var update_progress = setTimeout(function(){
                    var jxhr = $.ajax({
                        type: "POST",
                        url: "grab.php",
                        data: "test",
                        success: function(data){
                            var error = data.error;

                            if(error == false) {
                                // My nonsense is here
                            } else if(error == true) {
                                // Stop sending AJAX request
                                clearTimeout(update_progress);
                                jxhr.abort();
                            }

                        }, dataType: "json", complete: poll, timeout: 2000 });
            }, 2000);
        })()
    });

如您所见,如果我的脚本返回错误,我将尝试再次中止再次调用“ complete:”回调,并且我也清除了超时。

因此,从根本上讲,它不再应该执行任何ajax请求。但是它仍然可以。我怎么了

赫姆斯

我认为这样可能有效:

$(function() {
    (function poll(){
        var keepPolling = true;
        var update_progress = setTimeout(function(){
                var jxhr = $.ajax({
                    type: "POST",
                    url: "grab.php",
                    data: "test",
                    success: function(data){
                        var error = data.error;

                        if(error == false) {
                            // My nonsense is here
                        } else if(error == true) {
                            // Stop sending AJAX request
                            keepPolling = false;
                        }

                    }, dataType: "json", complete: function() {
                        if (keepPolling) {
                            poll();
                        }
                    }, timeout: 2000 });
        }, 2000);
    })()
});

基本上,有一个额外的var可以跟踪是否要继续轮询。将其默认设置为true,并在出现错误时设置为false。然后,在完整方法中,检查是否要继续轮询,然后再次实际调用poll。

我不确定首先要说完成还是成功。如果首先调用complete,那么它将无法正常工作(尽管您可以在传递给setTimeout的函数顶部添加keepPolling检查)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章