0
У меня есть этот небольшой фрагмент кода (это внутри объекта):Модифицированного закрытие и SetTimeout
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;
}
}
Но очевидно, что чудо не произошло. Кто-нибудь знает, как подойти к этой проблеме?
Just ... Wow. Это работает. Спасибо, это для меня что-то новое. Не могли бы вы немного объяснить? – ojek
Он использует выражение [немедленно вызываемое выражение] (http://en.wikipedia.org/wiki/Immediately-invoked_function_expression), чтобы создать новую область, передав вашу переменную в качестве параметра. Внутри функции это отдельная переменная, поэтому она не изменяется по мере продвижения цикла. –