如何在jQuery中实现多线程

时间:2011-12-16 06:56:43

标签: ajax jquery-ui jquery

我有20页,每页包含30个li标签,如下所示

<li id="1">1<li/>
<li id="2">2<li/>
<li id="3">3<li/>
<li id="4">4<li/>
<li id="5">5<li/> 
...

我会针对每个ajax(.getJSON())标记为多个线程发起li调用, 我使用以下jQuery代码完成了这个,但它是一个接一个的ajax(.getJSON)调用, 完成一次ajax调用需要2秒(业务逻辑+表示逻辑)。要加载总页数,需要60秒(2x30)。

jQuery(li).each(function(e) {
    jQuery.getJSON(JSonUrl,{},
        function(json) {
            // AJAX Response.
            if (json == null) {
            } else {
                var jsonList = json.deviceStatusString.split(',');
                var jsonInnerList = jsonList[0].split('#');
                ...
            }
        }
    );
 });

你能帮我解决像java多线程一样的所有ajax调用吗?

2 个答案:

答案 0 :(得分:4)

我相信您达到了最大数量的请求限制,因此您的浏览器正在等待更多线程可用。看看这个主题:How many concurrent AJAX (XmlHttpRequest) requests are allowed in popular browsers?

答案 1 :(得分:1)

如果您遇到多个AJAX请求的性能问题,那么您应该始终考虑的事情之一是将所有这些AJAX调用最小化为更少的调用,最好是将所有这些调用放入一个AJAX中调用

这样,你就可以摆脱与抛出和维护多个HTTP请求相关的一大堆开销。