2

语境

我用 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]);
4

2 回答 2

5

更改完整功能如下:

function () {
     updateSite(allSites[++i]);
}
于 2012-08-14T15:45:37.587 回答
0

有任何错误信息吗?

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

尝试这个:

var updateSite;
updateSite = function (site) {
    if (site.status == 'waiting for update') {
        updateStatus(i, site, 'update in progress');
.... // everything else the same...
于 2012-08-14T15:44:28.017 回答