Синхронный AJAX

Greezley

Новичок
Братцы, такая проблема. Нужно делать обработку строки базы данных аяксом (выборка, обработка результата, отправка данных на другой сервер, удаление). После завершения работы одного аякса нужно вызвать следующий, который вытащит следующую строку из базы. Время обработки может быть разное.
Запросы накладываться друг на друга не должны, потому что получается обработка одной строки дважды, если она не успела удалиться.
Ищу способ заморозить любые действия js во время работы ajax. Использую синхронный запрос и вызываю его каждые 200 мс. Но после просмотра результата увидел, что некоторые строчки повторяются, т.е. какие-то строки обработались дважды. Результат для меня немного не понятен, ибо думал, что всё должно умереть на время выполнения аякса.
Подскажите пожалуйста хороший способ последовательного вызова аяксов, если это возможно...
 

tz-lom

Продвинутый новичок
Результат для меня немного не понятен, ибо думал, что всё должно умереть на время выполнения аякса.
угу,но для Asynchronous Javascript and XML это было бы немного странно

решение очень простое - посылайте следующий запрос как получите ответ на предыдущий
причём в принципе не важно какой ответ,успешный или нет
 

tz-lom

Продвинутый новичок
ну,можно подготовить данные в массив, а потом .pop например
 

Greezley

Новичок
не понял тебя. Какие данные? Данных нет никаких. Нужно вызывать на исполнение страницу каждый раз после завершения предыдущего.
Сейчас использую такой код:
PHP:
setInterval(function(){
                  $.ajax({
                    url: "get.php",
                    async: false,
                    cache: false,
                    success: function(data){
                    $("div#text").prepend(data);
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown){
                        ("div#text").prepend("Ошибка: "+textStatus);
                    }
             });
        },200);
Но он не гарантирует завершение работы скрипта, хоть используется синхронный запрос (бывает обрабатывается один и тот же код дважды).
Нужно вызывать функцию ajax в момент получения success, но как?
 

tz-lom

Продвинутый новичок
а,ну сразу бы код показывали,было бы легче )
варианта 2
1й - флаг блокировки , и по факту приёма ответа от сервера флаг снимается
2й - замерять время через объект Date , после приёма ответа от сервера сверять время и выполнять следующий запрос по setTimeout
 

Greezley

Новичок
Кстати с флагом идея нравится)) Нужно будет попробовать.
спасибо)
 

filipchuk

Новичок
в новых версиях JQuery для этих целей есть Defered объекты, которыми удобно делать такие цепочки вызовов
 
Сверху