0

我有一个要向其发出请求的 URL 列表。除了根据我发出请求的 url 更新页面的不同部分之外,响应的处理是相同的,因此我想对每个请求使用相同的回调。

我的问题是第一个请求调用回调,然后在第一个请求处理完成之前再次调用第二个请求。这在某种程度上是意料之中的,但我原以为它会在完成第二个请求后返回并开始处理第一个请求。即使将 async 设置为 false 也会发生这种情况 - 显然同步部分在调用回调时停止。

我找到的唯一解决方案是在回调中发出第二个请求。有没有更好的办法?

这是问题代码:

function doStuff() {
   // populate a var urls array with data from user input
   var urls = new Array();
   // ... code to populate urls ...

   // loop through urls and send requests
   for (var i = 0; i < urls.length; i++) {
       $.ajax({url: urls[i],
               success: handleResponse,
               dataType:'html'});
   }
}

function handleResponse(data) {   
    url = this.url;
    // process based on url
}
4

1 回答 1

0

jQuery Deferred 在您的情况下很有用

于 2012-11-06T05:02:01.127 回答