我有 2 个跨域 jsonp 请求需要先完成,然后才能执行另一种方法。所以我尝试了 $.when() 函数
$.when(getX(), getY()).then(createXY);
getX() 和 getY() 使用单独的 jsonp 回调向两个不同的域发出 $.ajax() 请求。
与我最初的想法相反,createXY() 在回调返回之前被调用。createXY() 因此没有它需要的数据。
有人可以为我提供一个在完成多个异步 jsonp 请求时调用函数的示例吗?
代码中的非常愚蠢的错误。getX() 和 getY() 调用 $.ajax() 但从不返回它。用 return 包装 $.ajax() 调用,代码现在工作正常。感谢你的帮助!
为了$.when()
工作,它必须传递一个它正在等待的延迟对象。确保您的getX()
和getY()
函数返回由每个生成的 jQuery ajax 调用创建的延迟对象。
如果您需要帮助,请发布getX()
and的代码getY()
。
$.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.");
}
});