Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.03.2014, 12:21
Аспирант
Отправить личное сообщение для Zhazhah Посмотреть профиль Найти все сообщения от Zhazhah
 
Регистрация: 27.11.2010
Сообщений: 48

Load - как дождаться загрузки
Здравствуйте,

$("#block").load("/block1.html");
$("#block2").load("/block2.html");

Подскажите как дождаться загрузки 2-х и более вызовов load, и по окончанию загрузки всех блоков сделать какое то действие например alert?
Ответить с цитированием
  #2 (permalink)  
Старый 02.03.2014, 12:37
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Zhazhah,завести переменную например x = 0;
в каждом load в callback делать подсчёт if(удачная загрузка) x++ ;if (x ==2) всё загружено
Ответить с цитированием
  #3 (permalink)  
Старый 03.03.2014, 01:21
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Зачем делать два запроса когда можно загрузить все одним?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 03.03.2014, 01:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

рони спешл фор ю:

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
var requestCounter = 0;
function fakeAjax(delay) {
    var n = ++requestCounter;
    var deferred = new $.Deferred();
    setTimeout(function() {
        $('body').append($('<div>', {text: 'Request ' + n + ' completed in ' + delay + ' ms. '}));
        deferred.resolve();
    }, delay);
    return deferred;
}

var promises = [
    fakeAjax(3000),
    fakeAjax(500),
    fakeAjax(1000),
];

$.when.apply($, promises).then(function() {
        $('body').append($('<div>', {text: 'All requests completed'}));
});
</script>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 03.03.2014, 01:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

Сообщение от danik.js
рони спешл фор ю:
спасибо но я нихрена не понял.
Ответить с цитированием
  #6 (permalink)  
Старый 03.03.2014, 02:06
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

1) $.ajax() возвращает интересный объект. Так называемый promise (обещание), в терминологии jQuery - deferred (отложенный).
У промисов есть методы .fail(), .done(), .then()
2) $.when позволяет подождать когда выполнятся все обещания и выполнить некий код. При этом функция также дает нам "обещание". То есть обещает что все обещания выполнятся.
$.when(promise1, promise2, ... promisen).then(все_обещания_выполнены);

3) Так как наши обещания (о завершении ajax-запросов) в массивчике, то юзаем Function.appy чтоб передать его как аргументы: $.when.apply(jQuery, promises)
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 03.03.2014, 02:09
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Так понятнее?
$.when( $.ajax('1.php'), $.ajax('2.php') ).then(function() { alert('Всё') })
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 03.03.2014, 02:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,124

danik.js,
спасибо буду конечно знать что так можно, но пока без понятия. как там внутри что за счёт чего срабатывает тёмный лес.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как загрузить и заставить работать скрипт после загрузки frame? Chifu Общие вопросы Javascript 3 13.04.2013 14:18
как отследить событие загрузки img? GrEb Events/DOM/Window 3 12.02.2010 16:47
Как отслеживать прогресс загрузки страницы и ошибки? Бобр AJAX и COMET 6 26.01.2010 08:14
Как выдавать ошибку при сбросе загрузки страницы? AvaGet Общие вопросы Javascript 2 11.12.2008 19:04
как дождаться AJAX ответа scuter Общие вопросы Javascript 3 23.03.2008 05:54