Как использовать 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, и код теперь работает нормально. Спасибо за вашу помощь!