window.setInterval from inside an object

Posted by Keith Rousseau on Stack Overflow See other posts from Stack Overflow or by Keith Rousseau
Published on 2010-05-19T12:16:36Z Indexed on 2010/05/19 12:20 UTC
Read the original article Hit count: 298

Filed under:
|

I'm currently having an issue where I have a javascript object that is trying to use setInterval to call a private function inside of itself. However, it can't find the object when I try to call it. I have a feeling that it's because window.setInterval is trying to call into the object from outside but doesn't have a reference to the object. FWIW - I can't get it to work with the function being public either.

The basic requirement is that I may need to have multiple instances of this object to track multiple uploads that are occurring at once. If you have a better design than the current one or can get the current one working then I'm all ears.

The following code is meant to continuously ping a web service to get the status of my file upload:

var FileUploader = function(uploadKey) {
    var intervalId;

    var UpdateProgress = function() {
        $.get('someWebService', {},
        function(json) {
            alert('success');
        });
    };

    return {
        BeginTrackProgress: function() {
            intervalId = window.setInterval('UpdateProgress()', 1500);
        },

        EndTrackProgress: function() {
            clearInterval(intervalId);
        }
    };
};

This is how it is being called:

var fileUploader = new FileUploader('myFileKey');
fileUploader.BeginTrackProgress();

© Stack Overflow or respective owner

Related posts about JavaScript

Related posts about jQuery