Есть ли способ, с помощью которого я мог бы выполнить ajax запрос n раз в обычном размере чанка? - PullRequest
0 голосов
/ 28 апреля 2020

Функция, определенная ниже, предназначена для создания объекта обещания с несколькими динамическими c ajax выполнением запроса,

function executeChunkwise(start, end, parameterObj, batchnumber){
    var allPromises = [];

    for(var i=start;i<end;i++) { 
        (function(index){
                allPromises.push(new Promise(function(resolve, reject) {
                    $.ajax({
                        url: "myurl",
                        data: 'queryparameter=' + parameterObj[index],
                        method: 'POST',
                        success: function (response) {
                            $.each(response, function() {
                                idObj = [];
                                $.each(this, function(k, v) {
                                    idObj.push(this.id);
                                });
                                data.push({
                                   'dynamicVar': parameterObj[index],
                                   'products': idObj
                                });
                            });
                        },
                        error: function (response) {
                            resolve(true)
                        }
                    }).done(function(response){
                        resolve(true);
                    });
                }));
        })(i);
    }
    //execute all promised ajax requests and pass the finalised reponse as data to create 
    //the json file via new ajax request.
    Promise.all(allPromises).then((result) => {
        $.ajax({
            url: "jsonGenerator.php",
            data: {
                response: JSON.stringify(data),
                batchnumber: batchnumber
            },
            dataType: 'json',
            cache: false,
            method: 'POST',
            success: function (item) {
                //success
            }
        });
   })
}

, который в дальнейшем будет выполняться для размера фрагмента 1000 при готовности документа.

$(document).ready(function() {
    val = <?php echo json_encode($records) ?>;
    chunk=1000;
    batchnumber = 1;
    for (start=0,end=val.length; start<end; start+=chunk) {
        var batchend = (start+chunk > end) ? end : start+chunk;
        executeChunkwise(start, batchend, val, batchnumber); 
        batchnumber+=1;
    }
})

В результате появляется странная ошибка для нескольких из обещанных ajax запросов,

Также на вкладке Сеть параметров разработчика я получаю предупреждающее сообщение:

Отображаются предварительные заголовки

Я не знаю, что я выполняю здесь неправильно, или существуют определенные ограничения для выполнения несколько непрерывных ajax запросов.

1 Ответ

0 голосов
/ 28 апреля 2020

Кажется, что ваш скрипт запускает несколько сотен или даже тысяч запросов ajax одновременно. Я думаю, это слишком много для вашего браузера и, может быть, для сервера тоже. См. Здесь: Сколько одновременных запросов AJAX (XmlHttpRequest) разрешено в популярных браузерах?

Попробуйте уменьшить количество параллельных запросов ajax, объединив их вместе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...