Как использовать jQuery.when() с несколькими запросами jsonp?

У меня есть 2 междоменных запроса jsonp, которые необходимо выполнить, прежде чем можно будет выполнить другой метод. Поэтому я попробовал функцию $.when()

$.when(getX(), getY()).then(createXY);

getX() и getY() отправляют запросы $.ajax() в два разных домена с отдельными обратными вызовами jsonp.

Вопреки моей первоначальной мысли, createXY() вызывается до возврата обратных вызовов. следовательно, createXY() не имеет необходимых данных.

Может ли кто-нибудь предоставить мне пример вызова функции, когда несколько асинхронных запросов jsonp выполнены?

2 ответа

За $.when() чтобы работать, ему нужно передать отложенный объект, которого он ждет. Убедитесь, что ваш getX() а также getY() функции возвращают отложенный объект, созданный вызовом jQuery ajax, который делает каждый.

Если вы хотите помочь в этом, отправьте код для getX() а также getY(),

Вот пример прямо из документа JQuery для$.when():

$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1,  a2){
  /* a1 and a2 are arguments resolved for the
      page1 and page2 ajax requests, respectively */
  var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */
  if ( /Whip It/.test(jqXHR.responseText) ) {
    alert("First page has 'Whip It' somewhere.");
  }
});

Очень глупая ошибка в коде. getX() и getY() вызывают $.ajax(), но никогда не возвращают его. Оберните вызовы $.ajax() с помощью return, и код теперь работает нормально. Спасибо за вашу помощь!

Другие вопросы по тегам