修改后的闭包和setTimeout

时间:2014-11-28 23:17:44

标签: javascript

我有这个小片段(这是在一个对象里面):

var tout = 0;
self.initialize = function() {
    for (var key in periods) {
        setTimeout(function() {
            self.server.sendData('customData', periods[key], 0);
        }, tout);
        tout = tout + 7000;
    }
}

正如您所看到的,我正在遍历periods个对象字段,我需要在setTimeout()内单独显示每个键。目前,这是不可能的。我正在尝试这样的事情,希望有一个奇迹:

self.initialize = function() {
    for (var key in periods) {
        var localkey = key; //here is the change
        setTimeout(function() {
            self.server.sendData('customData', periods[localkey], 0);
        }, tout);
        tout = tout + 7000;
    }
}

但显然,奇迹并没有发生。有没有人知道如何处理这个问题?

1 个答案:

答案 0 :(得分:0)

self.initialize = function() {
    for (var key in periods) {
        (function(key) {
            setTimeout(function() {
                self.server.sendData('customData', periods[key], 0);
            }, tout);
            tout = tout + 7000;
        })(key);
    }
}