如何使用jQuery.when()与多个jsonp请求?

时间:2013-03-27 00:28:22

标签: jquery jsonp when-js

我有2个跨域jsonp请求需要在另一个方法执行之前完成。所以我尝试了$ .when()函数

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

getX()和getY()使用单独的jsonp回调向两个不同的域发出$ .ajax()请求。

与我原来的想法相反,createXY()在回调返回之前被调用。因此,createXY()没有所需的数据。

当有多个异步jsonp请求完成时,有人可以提供一个关于调用函数的示例吗?

2 个答案:

答案 0 :(得分:0)

要使$.when()起作用,必须传递它正在等待的延迟对象。确保您的getX()getY()函数返回由每个jQuery ajax调用创建的延迟对象。

如果您需要帮助,请发布getX()getY()的代码。

以下是jQuery doc for $.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.");
  }
});

答案 1 :(得分:0)

代码中非常愚蠢的错误。 getX()和getY()调用$ .ajax()但永远不会返回它。使用return包装$ .ajax()调用,代码现在正常工作。谢谢你的帮助!