Как показать всплывающее диалоговое окно JQuery (для прогресса процесса) в процессе длинного цикла - PullRequest
0 голосов
/ 03 мая 2019

Я использую JavaScript. У меня есть цикл for, который перебирает около 5000 записей каждый раз, когда он вызывает ajax для отправки данных в веб-службу.до сих пор он работает нормально.

, но этот процесс занимает несколько раз, например, 60 секунд или больше.Поэтому мне нужно показать всплывающее окно прогресса.Я создал всплывающее окно JQuery и сделал индикатор выполнения.мой код сначала откроет окно прогресса, начало цикла внутри цикла. Я обновляю прогресс после завершения цикла. Я закрываю окна прогресса.

когда я запускаю код, окна прогресса не отображаются, но когдапетля заканчивается и появляется прямая.как это сделать.

пример кода

function AShowProgressDialog(dialog_name, CtrlListBox, CtrlFromDate, CtrlToDate, title){

$("#" + dialog_name ).dialog({

    dialogClass: "no-close",
            title: title,
            scrollable: false,
            height: 120,
            width: 550,
            resizable: false,
            modal: true,
    show: 'fade',
            hide: 'fade',
            closeOnEscape: false,
            autoOpen: true,
            stack: true,
            open: function(event, ui) {

            }
});

$("#" + dialog_name ).show();
};


function SubmitProcessRequest(CtrlListBox, CtrlFromDate, CtrlToDate, prProgressTitle){

AShowProgressDialog("pnlProgressCtrl", CtrlListBox, CtrlFromDate, CtrlToDate, prProgressTitle);

var strEmpList = ($.map( $("#" + CtrlListBox + "  option"), 
    function (item, i) { 
        return $.trim($(item).val()) ;// + "|" + $.trim($(item).text());
    } 
)).join(", ");

var FromDate = $('#' + CtrlFromDate).val();
var ToDate = $('#' + CtrlToDate).val();

var arrayEmpList = strEmpList.split(',');
var BatchSize = 30;
var count = Math.ceil(arrayEmpList.length / BatchSize);

for (var i = 0; i <  count; i++) { 

    var EmpDataToSend = strEmpList.split(',').slice(i*BatchSize, (i+1)*BatchSize);

    SEND DATA TO AJAX;

    $("#ctrlProgressBar").width( ((i / count) * 100)  + '%');

    $("#progressMessage").text( (i*BatchSize) + " of " + arrayEmpList.length);


}                   
closeDialog("pnlProgressCtrl");
}

это jsfiddle https://jsfiddle.net/kifahnajem/f5yb3e8o/

...