javascript - 来自对象内部的 window.setInterval

标签 javascript

我目前遇到一个问题,我有一个 javascript 对象试图使用 setInterval 调用其自身内部的私有(private)函数。但是,当我尝试调用它时,它找不到该对象。我有一种感觉,这是因为 window.setInterval 试图从外部调用该对象,但没有对该对象的引用。 FWIW - 我也无法让它与公开的功能一起工作。

基本要求是我可能需要有此对象的多个实例来跟踪同时发生的多个上传。如果您有比当前设计更好的设计,或者可以使当前设计正常工作,那么我会洗耳恭听。

以下代码旨在连续 ping 网络服务以获取文件上传的状态:

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);
        }
    };
};

这就是它的调用方式:

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

最佳答案

使用这个

 intervalId = window.setInterval(UpdateProgress, 1500);

带有文字参数的 setInterval 将在无法访问 UpdateProgress 的全局范围内评估此值。

关于javascript - 来自对象内部的 window.setInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2865332/

相关文章:

javascript - 使用 Javascript 更改现有的 onClick 函数

javascript - 反转图像的响应大小

javascript - 手动大写/小写解释

javascript - jQuery 在页面重新加载时淡出

javascript - 强制 URL 在新标签页中打开

javascript - 如何阻止用户从控制台执行javascript代码?

javascript - JQuery 字符串比较返回不正确的值?

javascript - 带有 Place-Id 的 Google Map API 文件字段

javascript - Bootstrap 3/jquery 2 - 单击时展开切换文本区域(覆盖)

javascript - JS : XMLHttpRequest only works on specific file extensions?