Хотя это работает, и печатает я от 0 до 9Как JS привязку к внешней функции обратного вызова Кордова
for (var i=0; i < 10; i++ {
function myFunction (callback) {
setTimeout(function() {
callback('Answering your phone call');
}, 10000);
}
myFunction(function (message) {
console.log("i = " + this.i + " , message = " + message);
}.bind({i: i}));
}
Это не работает, и печатает я, как 10, 10, 10, ... 10 (10 раз)
for (var i=0; i < 10; i++ {
// There is an externalFunction, which is a Cordova call, that does call the callBack function with a message.
externalFunction(function (message) {
console.log("i = " + this.i + " , message = " + message);
}.bind({i: i}));
}
Что я делаю неправильно? У меня нет контроля над внешней функцией, и я хочу сохранить вызов #, когда callBack вернется.
Я пробовал различные версии закрытий и связывает и не могу заставить это работать.
Возможный дубликат [Закрытие внутренних циклов JavaScript - простой практический пример] (http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) – Hamms
@Hamms Он не использует закрывающая переменная, он использует свойство объекта. – Barmar
Первый показывает только 0-9, потому что цикл заканчивается на i <10, поэтому «i» никогда не будет равняться 10 –