Как отключить асинхронность?

Добрый день, при загрузке страницы открывается модальное окно, и должны отправляться запросы на мой сервер
Но я столкнулся с проблемой асинхронности.
Как только страница загружается, в зависимости от количества товаров, они все сразу отправляются на сервер, что вызывает ошибку too many requests
let count_checked = 0;
        /*$('#progress-modal').modal('show' , 'keyboard');*/
        $.ajax({
            url: 'plugins/seller_controller.php',
            type: 'POST',
            data: {api: 'unchecked', auth: auth},
            success: function (data) {
                let result = JSON.parse(data);
                if (result['success'] === 1) {
                    $('#progress-modal').modal({
                        keyboard: false,
                        show: true,
                        backdrop: 'static',
                    });
                    let unchecked = result['oreders'].split(',');
                    let accountCount = unchecked_accounts.length;
                    $.each(unchecked_accounts, function (index, value) {
                        $.ajax({
                            url: 'plugins/seller_controller.php',
                            type: 'POST',
                            data: {api: 'check_account', auth: auth, id: value},
                            success: function (data) {
                                let result_json = JSON.parse(data);
                                ++count_checked;
                                $('#progress-bar').css('width', count_checked / accountCount * 100 + '%');
                                $('#account-login').html(result_json['login']);

                                if (count_checked >= accountCount) {
                                    window.location.reload();
                                }
                            },
                        });
                    });
                }
            }
        });

Пробовал выключить asyns во втором запросе, тогда у меня не открывается модальное окно, или страница остается на прелоадере, пока все запросы не отправятся. А результаты должны идти в прогресс бар
  • Вопрос задан
  • 535 просмотров
Решения вопроса 1
@Hess121 Автор вопроса
Проблему решил так
let index = 0;
                    let count_checked = 0;
                    setInterval(function() {
                        if (index === unchecked_accounts.length){
                            window.location.reload();
                        }
                        $.ajax({
                            url: 'plugins/seller_controller.php',
                            type: 'POST',
                            async: false,
                            data: {api: 'check_account', auth: auth, id: unchecked_accounts[index++]},
                            success: function (data) {
                                let result_json = JSON.parse(data);
                                ++count_checked;
                                $('#progress-bar').css('width', count_checked / accountCount * 100 + '%');
                                $('#account-login').html(result_json['login']);
                            },
                        });
                    }, 500);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@EnDronist
Используй лучше:
var responce = await fetch(url, options);
var data = await responce.json(); // Если сервер отправляет ответные данные

Код дождётся выполнения запроса, после чего можешь повторять процедуру, отправляя следующие по списку объекты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект