我有这个(尝试)长轮询功能
我想在一定时间内调用此函数,然后只要图库具有updating
类就进行长轮询工作,在这种情况下图库为$("... ")
function pollGallery(gallery){
if (gallery.hasClass("updating")){
var url = gallery.data("base") + "/refresh";
$.ajax({ url: url, dataType: "script", complete: pollGallery(gallery), timeout: 30000 });
}
}
当我运行这个时,我得到Maximum call stack size exceeded
并且从日志中看起来好像它没有调用ajax或者超时没有工作..
答案 0 :(得分:3)
您的代码没有将回调函数传递给complete
,它只是无限地递归调用函数。
$.ajax({ url: url, dataType: "script", complete: function() {
pollGallery(gallery);
}, timeout: 30000 });
complete
期望传递功能。通过complete: pollGallery(gallery)
,您立即调用pollGallery(gallery)
并尝试将其返回值分配给complete
选项,从而陷入无限递归循环。