Последовательные вызовы Ajax в цикле [дубликат]

Я отвечу ужасным, нарисованным рукой комиком. Второе изображение является причиной того, что result является undefined в вашем примере кода.

0
задан Cyber Sezar 12 December 2014 в 20:32
поделиться

1 ответ

Если вы нуждаетесь , запросы, которые будут выполняться последовательно, а не параллельно, вы можете сделать это с небольшой реструктуризацией. Не делайте запросы AJAX синхронными, просто используйте ответ каждого запроса для вызова следующего.

Рассмотрим такую ​​структуру:

function sendRequest() {
    $.ajax({
        type: "GET",
        url: "insert_names.php",
        success: function (data) {
            // some codes
        }
    });
}

Теперь запрос завернут в функции, которую вы можете вызвать. Поэтому вызовите его в ответ на предыдущий запрос:

function sendRequest() {
    $.ajax({
        type: "GET",
        url: "insert_names.php",
        success: function (data) {
            // some codes
            sendRequest();
        }
    });
}

Он начинает выглядеть как стандартный рекурсивный шаблон, поэтому все, что вам нужно сейчас, - это условие завершения. Как и в исходном цикле, просто используйте значение incrementing:

var i = 1;

function sendRequest() {
    $.ajax({
        type: "GET",
        url: "insert_names.php",
        success: function (data) {
            // some codes
            i++;
            if (i <= 10) {
                sendRequest();
            }
        }
    });
}

Затем просто запустите его один раз, чтобы запустить его:

sendRequest();

Теперь запрос должен быть вызван 10 раз, как (если только моя математика не отключена, но это должно быть легко исправить), каждый запрос выполняется в ответ на предыдущий запрос.

При асинхронном программировании не пытайтесь сделать его синхронным. Вместо этого выполните действия в ответ на обратные вызовы.

2
ответ дан David 4 September 2018 в 08:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: