Синхронные вызовы с jquery

Можно ли использовать jQuery AJAX API и сделать синхронные вызовы?

Ответ 1

Как Обама сказал бы: ДА ВЫ МОЖЕТЕ!

jQuery.ajax()

Настройка

async = false

в обработчике .ajax() выполнит трюк.

Ответ 2

В то время как jQuery может выполнять синхронизацию вызовов AJAX, устанавливая свойство synch: false, это заставляет браузер зависать до завершения AJAX. Использование библиотеки управления потоком, например Frame.js, позволяет делать синхронные вызовы без привязки браузера:

$.each(ajaxObjects, function(i, ajaxCall){
    Frame(function(next)){ // declare the callback next here

        ajaxCall.complete = function(data){
            // do something with the data
            next(); // go to the next ajax call
        }
        $.ajax(ajaxCall);

    });
}
Frame.init();

Эта серия вызовов AJAX будет выполнена в порядке, каждый из которых ожидает завершения предыдущего, без зависания браузера. Также имеет дополнительное преимущество, что данные возвращаются из вызовов ajax в предсказуемом порядке, в отличие от асинхронных вызовов, которые возвращаются в случайном порядке.