4

如果是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();
        }
    });
}
4

1 回答 1

1

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

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

于 2012-04-12T20:41:16.947 回答