У меня есть следующий скрипт, который запускает 5 запросов ajax и сообщает, когда они будут выполнены. Все, что использует jQuery, обещает и $.where
.Как передать локальную переменную в функцию обещания
console.info('Creating promises: start');
var p = [];
for(var i=0; i<5; i++) {
a = $.when(x(i)).done(function(){
console.log('Promise ' + i + ': done');
});
p.push(a);
}
console.info('Creating promises: done');
console.log('Running promises: start');
$.when.apply($,p).done(function(){
console.log('Running promises: done');
});
function x(i) {
console.log('Promise ' + i + ': start');
return $.ajax({
'url' : '/'
})
.done(function() {
});
}
Проблема заключается в том, что console.log('Promise ' + i + ': done');
всегда возвращает Promise 5: done
, потому что i
-переменную имеет значение 5
, когда функция done()
выполняется.
Мой вопрос: какой хороший и чистый способ дать i
в контексте done()
-функция в for
-loop?
Просто поместите его в том, что 'x' функция , – Bergi