何时-然后陈述如何在JQuery内部循环遍历Ajax请求?

何时-然后陈述如何在JQuery内部循环遍历Ajax请求?,第1张

何时-然后陈述如何在JQuery内部循环遍历Ajax请求

可以按照您的要求进行 *** 作。但是,您将请求发送到的服务器可能有一个原因限制了它们。作为从事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,则仅获取所有剩余元素。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4957367.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存