首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery异步请求

Jquery异步请求
EN

Stack Overflow用户
提问于 2011-06-15 05:05:25
回答 2查看 209关注 0票数 1

我已经在jquery中实现了comet客户端,如下所示:

代码语言:javascript
复制
$(document).ready(function () {
    comet();
});

function comet(){
    var cometJSON = {
            'comet': 'id'
        }
    $.ajax({
        type: "POST",
        url: "http://localhost:8080/comet",
        data: JSON.stringify(cometJSON),
        async: true, /* Set async request*/
        cache: false,
        timeout:50000, /* Timeout in ms */

        success: function(data){ 
            console.log('suc');
            eventReceived(data); 

        },
        error: function(jqXHR, textStatus, errorThrown){
            console.log("error: "+textStatus);

        },
        complete: function(jqXHR, textStatus){
            console.log("Send new comet!");
            comet();
        }
    });
};

一切都很好,但是我的浏览器标签总是有噪音,我的状态面板总是显示:正在等待localhost,我如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-15 05:15:06

微调指示一个正在进行的连接,这正是正在发生的事情--在你收到应答后,在complete部分你会立即触发一个新的请求,因此大部分时间(几乎总是)都有一个正在进行的连接。为了避免这种情况,您需要在新请求之前进行延迟- setTimeout(comet, 1000)听起来像是最后一个comet();的一个很好的替代方案

票数 4
EN

Stack Overflow用户

发布于 2011-06-15 05:12:02

我前段时间实现了同样的事情,遇到了同样的问题:

https://github.com/tenorviol/cometjax

为了解决永远旋转的问题,在最初的ajax调用中设置一个超时,例如:

代码语言:javascript
复制
$(document).ready(function () {
  setTimeout(function() {
    comet();
  }, 10);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6350152

复制
相关文章

相似问题

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