У меня есть функция, которая пересекает N количество строк в таблице.Как использовать jQuery, когда функция внутри цикла?
function runStuff() {
var databasename = $("#MainContent_ddlTestCaseDB").val();
var action = $("#MainContent_DropDownList1").val();
var aPos;
var aData;
var caseName;
var configId;
var partNumber;
var runCommand;
swal({
title: 'Processing ...',
showConfirmButton: false,
showLoaderOnConfrirm: true
});
if (action === "ConfigureSelected" || action === "UpdateSelecedCases") {
$('tr:has(input:checkbox:checked)').each(function() {
aPos = oTable.row(this).index();
aData = oTable.row(aPos).data();
caseName = aData["CaseName"];
configId = aData["ConfigId"];
partNumber = aData["PartNumber"];
runCommand = action === "ConfigureSelected" ? "B" : "UTC";
submitRowToBeProcessed("MassReRun", databasename, caseName, configId, partNumber, runCommand);
});
}
else if (action === "RunAll" || action === "UpdateCasesRunAll") {
$('#tblCases tbody tr').each(function() {
aPos = oTable.row(this).index();
aData = oTable.row(aPos).data();
caseName = aData["CaseName"];
configId = aData["ConfigId"];
partNumber = aData["PartNumber"];
runCommand = action === "RunAll" ? "B" : "UTC";
submitRowToBeProcessed("MassReRun", databasename, caseName, configId, partNumber, runCommand);
});
}
location.reload();
}
Это вызывает функцию с именем submitRowToBeProcessed, который делает вызов Ajax для каждой строки.
function submitRowToBeProcessed(action, databasename, caseName, configId, partNumber, runCommand) {
//$("#loading-indicator-box").show();
$.ajax({
type: 'POST',
url: 'process.aspx',
data: { command: action, DatabaseName: databasename, CaseName: caseName, ConfigId: configId, PartNumber: partNumber, RunCommand: runCommand },
//async: false,
beforeSend: function (xhr) {
},
success: function() {
//$("#loading-indicator-box").hide();
},
error: function() {
//$("#loading-indicator-box").hide();
}
});
}
Я понимаю, что я должен каким-то образом использовать функцию $when
ждать всех этих запросов Ajax для завершения, но я не уверен, как это сделать, когда число запросов Ajax являются динамическими.
В конечном итоге я хотел бы показать сообщение обработки конечным пользователям, пока не вернутся все запросы ajax. Еще лучше, если я смогу получить это сообщение, чтобы обновить ход 1 обработки обработки строк 2 или обработку счетчика строк.
Может быть, я должен опубликовать отдельный вопрос. По существу думайте о каждой строке таблицы как ajax-запрос. Я хотел бы показать каждую строку в этой таблице как обработку до тех пор, пока ее соответствующий вызов ajax не завершится. Каждый вызов ajax может занять несколько секунд, и я могу иметь тысячи строк. Что вы предоставили здесь, я получу его часть, показывая пользователю, когда все эти тысячи строк будут завершены. – pricejt
Это просто небольшое изменение. Я обновил ответ, чтобы показать, как вы можете это сделать. В принципе просто добавьте класс в строку, которая укажет пользователю, что запрос обрабатывает, и очистите этот класс, когда запрос будет завершен. Вы даже можете отслеживать, сколько запросов выполняется. В конце вы все равно можете использовать массив запросов, чтобы определить, когда все запросы завершены. – dave
Спасибо, что так отлично работали. – pricejt