Javascript 递归函数在第一个循环后停止 上下文
我用Ajax调用更新了几个站点,一个接一个地更新,以节省服务器 我制作了一个递归函数,当Ajax调用完成时,它会再次运行 问题 该函数在第一次循环后停止 有什么想法吗 代码Javascript 递归函数在第一个循环后停止 上下文,javascript,jquery,ajax,recursion,Javascript,Jquery,Ajax,Recursion,我用Ajax调用更新了几个站点,一个接一个地更新,以节省服务器 我制作了一个递归函数,当Ajax调用完成时,它会再次运行 问题 该函数在第一次循环后停止 有什么想法吗 代码 var updateSite=函数(站点){ 如果(site.status==“正在等待更新”){ updateStatus(i,站点“更新中”); $.get(site.url) .success(函数(){ 更新状态(i,站点“更新”); }) .错误(函数(){ 更新状态(i,站点“未更新”); }) .完成(功能()
var updateSite=函数(站点){
如果(site.status==“正在等待更新”){
updateStatus(i,站点“更新中”);
$.get(site.url)
.success(函数(){
更新状态(i,站点“更新”);
})
.错误(函数(){
更新状态(i,站点“未更新”);
})
.完成(功能(){
updateSite(所有站点[i++]);
});
}
};
var i=0;
更新站点(所有站点[i]);
有错误消息吗
在定义用于complete的匿名函数时,可能还没有定义varupdateSite
试试这个:
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
进行进一步处理。