在jQuery中的asyn foreach

我想要的是在异步模式下运行代码以获得更快的响应(multithreading)。

我有一个像源“源”的数组,我想要的是从每个数据中获取数据。

我想过这样的事情:

$.each(sources, function(key, val) { JSON CALL OF EACH SOURCE } 

然后将所有结果分组并显示它们。 问题是我希望json调用处于异步模式,因为它们中的一些需要一些时间。

我怎么能用jQuery在异步模式下做’each’?

使用延迟对象:

 // get an array of jqXHR objects - the AJAX calls will // run in parallel, subject to browser limits on the number // of concurrent connections to each host var defs = $.map(sources, function() { return $.ajax({ url: this }); }); // when they're all done, invoke this callback $.when.apply($, defs).done(function() { // "arguments" array will contain the result of each AJAX call ... }); 

要更改AJAX函数以便只返回data参数,可以使用.pipe()

 var defs = $.map(sources, function() { return $.ajax({ url: this }).pipe(function(data, text, jqxhr) { return data; // filtered result }); });