Являются ли функции jQuery fadeIn (), animation () неблокирующими? - PullRequest
1 голос
/ 30 июля 2011

У меня есть страница, которая выдает несколько запросов ajax в $('document').ready(). Я хочу использовать fadeIn() или animation() для отображения некоторой информации в течение нескольких секунд после получения первого вызова Ajax.

Будут ли заблокированы следующие вызовы js / ajax во время воспроизведения анимации? Или я должен использовать setTimeout для задержки анимации на секунду, чтобы ajax-вызовы могли запускаться асинхронно?

Edit:

Мой код будет выглядеть следующим образом. Будут ли другие ajax-вызовы заблокированы на 5 секунд?

$.ajax({..., success: function(result) {
    $('#msg').html(result.xxx);
    $('#msg').fadeIn(5000);

    // Other ajax calls
    $.ajax(....)
    ....
}

Ответы [ 2 ]

4 голосов
/ 30 июля 2011

Да, они не блокируют.Методы анимации просто запускают анимацию и сразу же возвращаются.

Любой код, который обновляет пользовательский интерфейс, должен быть неблокирующим, поскольку пользовательский интерфейс не обновляется, пока выполняется любая функция.

1 голос
/ 30 июля 2011

Все javascript можно считать блокирующим, поскольку он полностью однопоточный.

Вы не можете сделать что-то вроде:

fadeIn
sleep(5 seconds)
fadeOut

, не вызывая входящие ответы ajaxбыть в очереди, пока не вернется fadeOut.Возможно, лучше всего использовать setTimeout.

РЕДАКТИРОВАТЬ: Как отмечает @Guffa, реальные вызовы fadeIn и fadeOut сами по себе не блокируют вызовы.Что вы, вероятно, хотите, это что-то вроде:

fadeIn(time, function() {
    setTimeout("fadeOut()", 5000);
});

или слова на этот счет.

...