可以按照您的要求进行 *** 作。但是,您将请求发送到的服务器可能有一个原因限制了它们。作为从事Web开发工作并亲眼目睹DDOS,抓取以及其他滥用API的人,我建议遵循其限制。
话虽如此,这是您可以做到的。
$ .ajax实际上返回一个延迟的对象,因此您可以利用该对象。$ .when还可以接受任意数量的延迟对象。结合这两个事实可以解决您的问题。
var deferreds = [];$.each(groupedStats, function(index, stat){ deferreds.push( // No success handler - don't want to trigger the deferred object $.ajax({ url: '/some/url', data: {stat: stat}, type: 'POST' }) );});// Can't pass a literal array, so use apply.$.when.apply($, deferreds).then(function(){ // Do your success stuff}).fail(function(){ // Probably want to catch failure}).always(function(){ // Or use always if you want to do the same thing // whether the call succeeds or fails});
请注意,这不是竞争条件。尽管$ .ajax是异步的,但$ .each不是异步的,因此您的递延列表将是到达$ .when之前的总列表,并且$ .then /
$。fail / $。always仅在它们全部完成后才被触发。
编辑:我忘了添加5s拆分,但这说明了总体思路。您可能可以从这里弄清楚如何将其应用于您的问题。顺便说一句,您可以只使用array.splice(0,5)从数组中获取下5个结果。.splice是可以安全使用的;如果元素总数少于5,则仅获取所有剩余元素。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)