clearInterval не работает с setInterval - PullRequest
1 голос
/ 17 ноября 2011

У меня проблема с кодом ниже.По сути, я реализую механизм опроса, но когда он должен прекратить опросы, он просто продолжает опрашивать.Бесконечный опрос.

Есть ли другой способ заставить его остановиться?

Функция SearchPoll вызывается только один раз.

function SearchPoll(){
    var i = setInterval(function () 
    { 
        var url = "Search.aspx?polling=true";        
        $.ajax( 
        { 
            url: url,
            success: function (data) 
            {     
                clearInterval(i); 
            }, 
            error: function () 
            { 
                clearInterval(i); 
            } 
        }); 
    }, 1000); 
}

Ответы [ 2 ]

0 голосов
/ 17 ноября 2011

Если вы хотите уничтожить все запросы, вам нужно работать с объектом XMLHTTPRequest, возвращенным из $ .ajax.Вот пример :

function SearchPool(){
    var xhrArray = [], 
        interval = setInterval(function () { 
            var url = "Search.aspx?polling=true";        
            xhrArray.push($.ajax({ 
                url: url,
                success: function (data) {     
                    for(var i = 0; i < xhrArray.length; i+= 1) {
                        xhrArray[i].abort();
                    }
                    clearInterval(interval); 
                }, 
                error: function () { 
                    clearInterval(interval);
                } 
            })); 
        }, 20);
}
SearchPool();
0 голосов
/ 17 ноября 2011

Кажется, что эта скрипка работает правильно ... http://jsfiddle.net/sramam/yZTAK/

...