javascriptajaxsetintervalpolling

Using setInterval() to do simplistic continuous polling


For a simple web app that needs to refresh parts of data presented to the user in set intervals, are there any downsides to just using setInterval() to get a JSON from an endpoint instead of using a proper polling framework?

For the sake of an example, let's say I'm refreshing the status of a processing job every 5 seconds.


Solution

  • I would use setTimeout [docs] and always call it when the previous response was received. This way you avoid possible congestion or function stacking or whatever you want to call it, in case a request/response takes longer than your interval.

    So something like this:

    function refresh() {
        // make Ajax call here, inside the callback call:
        setTimeout(refresh, 5000);
        // ...
    }
    
    // initial call, or just call refresh directly
    setTimeout(refresh, 5000);