我正试图在HTML中使用JQuery完成以下一系列操作。并行执行多个AJAX请求,并在完成所有请求后运行一个函数
- 的URL列表构造
- 各URL平行
- 等待使用$ .getJSON(URL)的所有请求完成或失败请求(404可能发生)
- 获取所有完成的JSON请求的数据并执行一些操作。
我构建了下面发布的Java脚本代码。它可以正常工作,除非其中一个请求由于404错误而失败:然后,$.when
不会运行,因为如果请求失败它会立即中止。你能以某种方式重写ajax-requests,所以它们不会失败,而是返回一个空的源代码?
我已经阅读this和this文章,但它没有提供解决方案,在所有查询完成后都可以运行代码。
function fetchData() {
queries = [];
//urls is initialized somewhere else containing all urls
for(var url in urls) {
queries.push($.getJSON(url));
}
$.when.apply(this, queries).done(function() {
console.log("Finished all queries, got "+arguments.length+" results");
//Now arguments is a array containing the results of all requests
}
//function returns instantly, no problem!
}
我不是jquery的经验,但似乎你需要查询计数器。即设置一个计数器,以查询您将发送的数量。在成功或相应的错误函数中,递减计数器(在Javascript中是一元递减原子吗?)。一旦计数器达到零,您就知道所有请求都已完成,您可以处理结果。当然,一旦完成所有查询,您将不得不缓存查询结果以供日后处理。 – ewh 2011-04-24 22:10:41
Duplicate:http://stackoverflow.com/questions/1060539/parallel-asynchronous-ajax-requests-using-jquery – joeytwiddle 2015-03-16 22:13:56