Синхронные звонки с помощью jquery - PullRequest
10 голосов
/ 31 мая 2010

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

Ответы [ 2 ]

14 голосов
/ 31 мая 2010

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

jQuery .ajax ()

Настройка

async = false

в обработчике .ajax () добьется цели.

3 голосов
/ 28 апреля 2012

Хотя 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 в предсказуемом порядке, в отличие от асинхронных вызовов, которые возвращаются в случайном порядке.

...