Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 递归函数在第一个循环后停止 上下文_Javascript_Jquery_Ajax_Recursion - Fatal编程技术网

Javascript 递归函数在第一个循环后停止 上下文

Javascript 递归函数在第一个循环后停止 上下文,javascript,jquery,ajax,recursion,Javascript,Jquery,Ajax,Recursion,我用Ajax调用更新了几个站点,一个接一个地更新,以节省服务器 我制作了一个递归函数,当Ajax调用完成时,它会再次运行 问题 该函数在第一次循环后停止 有什么想法吗 代码 var updateSite=函数(站点){ 如果(site.status==“正在等待更新”){ updateStatus(i,站点“更新中”); $.get(site.url) .success(函数(){ 更新状态(i,站点“更新”); }) .错误(函数(){ 更新状态(i,站点“未更新”); }) .完成(功能()

我用Ajax调用更新了几个站点,一个接一个地更新,以节省服务器

我制作了一个递归函数,当Ajax调用完成时,它会再次运行

问题 该函数在第一次循环后停止

有什么想法吗

代码
var updateSite=函数(站点){
如果(site.status==“正在等待更新”){
updateStatus(i,站点“更新中”);
$.get(site.url)
.success(函数(){
更新状态(i,站点“更新”);
})
.错误(函数(){
更新状态(i,站点“未更新”);
})
.完成(功能(){
updateSite(所有站点[i++]);
});
}
};
var i=0;
更新站点(所有站点[i]);
有错误消息吗

在定义用于complete的匿名函数时,可能还没有定义var
updateSite

试试这个:

var updateSite;
updateSite = function (site) {
    if (site.status == 'waiting for update') {
        updateStatus(i, site, 'update in progress');
.... // everything else the same...

将完整功能更改如下:

function () {
     updateSite(allSites[++i]);
}

@Amberlamps——下一个调用由.complete启动function@LarryK:谢谢!我显然不习惯jQuery:)@GG——一定要在多个浏览器中测试,尤其是IE@LarryK:这是一个内部工具,如果它在chrome上工作就可以了。:)@GG:如果您使用
allSites.shift()
而不是
allSites[i]
您首先不需要
i
,但我想您需要
i
进行进一步处理。