window.setInterval来自一个对象

Kei*_*eau 0 javascript

我目前遇到一个问题,我有一个javascript对象试图使用setInterval来调用自身内部的私有函数.但是,当我尝试调用它时,它无法找到该对象.我有一种感觉,因为window.setInterval试图从外部调用对象,但没有对该对象的引用.FWIW - 我也无法使用公共功能.

基本要求是我可能需要拥有此对象的多个实例来跟踪一次发生的多个上载.如果你有一个比现在更好的设计或者可以使当前的设计工作,那么我就是全部的耳朵.

以下代码用于连续ping Web服务以获取文件上载的状态:

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);
        }
    };
};
Run Code Online (Sandbox Code Playgroud)

这就是它的调用方式:

var fileUploader = new FileUploader('myFileKey');
fileUploader.BeginTrackProgress();
Run Code Online (Sandbox Code Playgroud)

Sea*_*sey 8

用这个

 intervalId = window.setInterval(UpdateProgress, 1500);
Run Code Online (Sandbox Code Playgroud)

带有文字参数的setInterval将eval在全局范围内UpdateProgress无法访问.