javascriptajaxajax-polling

How to break out of AJAX polling done using setTimeout


I want to implement AJAX polling mentioned in this answer. Now I want to break out of polling when server return particular data value. How to do that?


Solution

  • Try something like this (where you change the condition to set continuePolling false to whatever you need):

    (function poll() {
    var continuePolling = true;
        setTimeout(function() {
            $.ajax({
                url: "/server/api/function",
                type: "GET",
                success: function(data) {
                    console.log("polling");
                    if (data.length == 0)
                    {
                        continuePolling = false;
                    }
                },
                dataType: "json",
                complete: function() { if (continuePolling) { poll(); }),
                timeout: 2000
            })
        }, 5000);
    })();