Я думаю, вам придется прекратить использовать .each()
, потому что он сразу запускает всю итерацию, и вы не хотите этого делать.
Вот один из способов сделать это, используя функции завершения илокальная функция:
function copyMove(moveLocation, urlCopyPrefix, urlMovePrefix, urlSuffix)
var checked = $('input:checked');
var index = 0;
function next() {
if (index < checked.length) {
var currentInput = checked.eq(index++).val();
$.get(urlCopyPrefix + currentInput + urlSuffix, function() {
$.get(urlMovePrefix + moveLocation + urlSuffix, function() {
$('#module-' + moveLocation).before('<li>New Line</li>');
next();
});
});
}
}
next();
}
Или, используя deferreds:
function copyMove(moveLocation, urlCopyPrefix, urlMovePrefix, urlSuffix)
var checked = $('input:checked');
var index = 0;
function copyUser () {
var currentInput = checked.eq(index).val();
return $.get(urlCopyPrefix + currentInput + urlSuffix);
}
function moveUser() {
return $.get(urlMovePrefix + moveLocation + urlSuffix);
}
function cleanup() {
++index;
$('#module-' + moveLocation).before('<li>New Line</li>');
next();
}
function next() {
if (index < checked.length) {
$.when(copyUser()).pipe(moveUser).then(cleanup);
}
}
next();
}
Примечание о ваших отложениях: Вы должны передавать ссылки на функции, а не вызовы функций.Это означает, что вы передаете имя функции без скобок.