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