首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有办法在浏览器中停止HTTP调用,以便另一个调用可以继续进行?

是否有办法在浏览器中停止HTTP调用,以便另一个调用可以继续进行?
EN

Stack Overflow用户
提问于 2012-06-26 19:08:34
回答 2查看 66关注 0票数 1

我正在开发一个能够大量使用AJAX功能的应用程序。我目前正在处理一个页面,其中有大量ajax调用来呈现初始页面。所有这些调用都是通过相同的AJAX脚本路由的,因此必须由浏览器一次进行一次调用。(是的,有点低效)

我有一个加载另一个页面的事件,但不幸的是,它需要在重新呈现页面之前进行ajax调用。这样做的结果是,如果用户在第一次加载页面时单击该链接,浏览器在根据用户单击引发的事件重新呈现页面之前等待所有其他ajax调用。这导致在页面加载时单击指向该页面的链接时加载时间明显较慢。

我的问题是:是否有一种方法可以使用Javascript或其他什么方法让web浏览器取消对web脚本的http调用,这样另一个事件就可以调用同一个脚本了?,我知道对不同脚本的每次调用都很好,这样它们就可以同时发生,但不幸的是,我正在开发的应用程序通过一个中心脚本将所有ajax请求发送出去,而且这种情况不会很快改变。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-26 20:17:31

使用XMLHttpRequest对象上的XMLHttpRequest取消任何正在进行的请求,并将对象返回到可重用状态。

你可以把它包装在一个助手对象中,如:

代码语言:javascript
运行
复制
function HttpQueue(uri) {
    var queue= [];
    var xhr= new XMLHttpRequest();
    xhr.onreadystatechange= function() {
        if (xhr.readyState===4 && queue.length>=1) {
            queue.unshift()[1](xhr);
            if (queue.length>=1)
                next();
        }
    };
    this.send= function (data, callback, isurgent) {
        if (isurgent && queue.length>=1) {
            queue.length= 0;
            xhr.abort();
        }
        queue.push([data, callback]);
        if (queue.length==1)
            next();
    };
    function next() {
        xhr.open('POST', uri, true);
        xhr.send(queue[0][0]);
    }
}

var queue= new HttpQueue('/script');

queue.send('action=foo', function() {
    alert('task 1 done');
}, false);

queue.send('action=bar', function() {
    alert('task 2 done');
}, false);

queue.send('action=bof', function() {
    alert('task 3 is urgent! tasks 1 and 2 can get knotted');
}, true);

(未经测试,可能有效)

票数 2
EN

Stack Overflow用户

发布于 2012-06-26 19:13:50

您可以使用jQuery $.ajax方法。

此时,您将为每个调用指定一个超时,然后将aSync设置设置为false。这样,一次只能运行一个ajax请求。

文档可以在这里找到:http://api.jquery.com/jQuery.ajax/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11214322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档