递归函数在第一个循环后停止

时间:2012-08-14 15:40:29

标签: javascript jquery ajax recursion

上下文

我使用Ajax调用更新多个站点,逐个保存服务器。

我创建了一个递归函数,在Ajax调用完成后再次运行。

问题

第一次循环后该功能停止。

有什么想法吗?

代码

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

        $.get(site.url)
            .success(function () {
                updateStatus(i, site, 'updated');
            })
            .error(function () {
                updateStatus(i, site, 'not updated');
            })
            .complete(function () {
                updateSite(allSites[i++]);
            });
    }
};

var i = 0;

updateSite(allSites[i]);

2 个答案:

答案 0 :(得分:5)

更改完整功能如下:

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

答案 1 :(得分:0)

有错误消息吗?

当定义用于完成的匿名函数时,可能尚未定义var updateSite

试试这个:

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