0

我有 2 个跨域 jsonp 请求需要先完成,然后才能执行另一种方法。所以我尝试了 $.when() 函数

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

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

与我最初的想法相反,createXY() 在回调返回之前被调用。createXY() 因此没有它需要的数据。

有人可以为我提供一个在完成多个异步 jsonp 请求时调用函数的示例吗?

4

2 回答 2

0

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

于 2013-03-30T20:53:00.500 回答
0

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

如果您需要帮助,请发布getX()and的代码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.");
  }
});
于 2013-03-27T00:39:50.497 回答