Javascript 长轮询导致超过最大调用堆栈大小

Javascript 长轮询导致超过最大调用堆栈大小,javascript,jquery,long-polling,Javascript,Jquery,Long Polling,我有这个(尝试的)长轮询功能 我想在一定时间内调用此函数,然后使长轮询工作,只要库具有更新类,本例中的库是$(“..”) 当我运行这个程序时,我得到的最大调用堆栈大小超过了,从日志中,它似乎既没有调用ajax,也没有超时 您的代码没有将回调函数传递给complete,它只是无限递归地调用函数 $.ajax({ url: url, dataType: "script", complete: function() { pollGallery(gallery); },

我有这个(尝试的)长轮询功能

我想在一定时间内调用此函数,然后使长轮询工作,只要库具有
更新
类,本例中的库是
$(“..”)


当我运行这个程序时,我得到的
最大调用堆栈大小超过了
,从日志中,它似乎既没有调用ajax,也没有超时

您的代码没有将回调函数传递给
complete
,它只是无限递归地调用函数

    $.ajax({ url: url, dataType: "script", complete: function() {
        pollGallery(gallery);
    }, timeout: 30000 });

complete
要求传递一个函数。通过
complete:pollGallery(gallery)
您可以立即调用
pollGallery(gallery)
并尝试将其返回值分配给
complete
选项,从而陷入无限递归循环。

谢谢!我想它可以像onclick符号一样被注意到。谢谢@尼克金纳托:是的,没错<代码>;)回调模式是相同的,当某个事件发生时,您必须传递一个要执行的函数(例如,收到的网络响应,用户单击某个元素)。我将此归咎于@nickginato,教程使用了
complete:poll
,其中
poll
是一个函数引用,因此,它本质上是将一个函数传递给
complete
选项。它不同于
poll()
,后者更接近您的原始案例<代码>=]
    $.ajax({ url: url, dataType: "script", complete: function() {
        pollGallery(gallery);
    }, timeout: 30000 });