【问题标题】:Is this a current implementation of long-polling?这是当前的长轮询实现吗?
【发布时间】:2012-04-12 19:40:16
【问题描述】:

如果是current,会不会出现调用栈溢出的问题?

因为它递归地调用自身无限

如果会出现这样的问题,有没有更好的实现方式?

function waitForMsg(){
    $.ajax({
        type: "GET",
        url: "xxx.php",
        async: true,
        cache: false,
        timeout: 600000,
        success: function(data){
            handleFunction(data);
            waitForMsg();
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            XMLHttpRequest.abort();
            waitForMsg();
        }
    });
}

【问题讨论】:

  • 我认为你不会有这个问题。它的编码方式一次只有一个请求处于活动状态。

标签: jquery ajax long-polling


【解决方案1】:

我想这是一种递归,但不是严格地就当前上下文而言,因为您将匿名函数添加到传递给 ajax 函数的对象上,并且 ajax 调用立即返回(它不这样做任何评估功能的东西)。当 ajax 最终成功或失败时,无论需要调用哪个函数都处于一个全新的上下文中,具有不同的堆栈值和堆栈位置。

顺便说一句,我不确定我是否理解 XMLHttpRequest.abort(); 调用。到那个时候,XMLHttpRequest 已经失败了,所以中止应该是没有必要的(我想!)。

【讨论】:

    猜你喜欢
    • 2012-11-25
    • 1970-01-01
    • 2012-04-01
    • 2013-02-17
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 2023-04-06
    • 2010-09-24
    相关资源
    最近更新 更多