javascript - 确保最后调用特定函数(可能是异步的?)

时间:2011-08-16 16:40:55

标签: javascript jquery javascript-events

我在$(document).ready(function(){})中有以下函数,它运行良好并填充了很多字段,具体取决于查看的记录。问题是,在有很多结果的记录中,这会在加载站点上的许多图像(包括主徽标和加载指示符)之前执行。有没有办法确保此代码最后被调用?

$('.WorkstationCount').each(function (i, val) {
    $.ajax({
        url: 'details.svc/getWorkstationCounts',
        type: 'GET',
        data: { 'packageid': this.id },
        dataType: 'json',
        success: (function (el) {
            return function (count) {
                $(el).html(count.d);
            };
        })(this),
        error: function (a, b, c) {
            $('.Toast').html('Error Retreiving Workstation Count!');
        }
    });
});

我尝试将其包装在函数

function populateCount() { }

然后调用

window.setTimeout("populateCount", 1);

但它根本不再填充数据。

2 个答案:

答案 0 :(得分:2)

如果您需要在页面的所有图像都加载后发生某些事情(虽然我不明白为什么这是可取的),您可以使用window.onload事件。

window.onload = function() { alert("Page loaded"); }

答案 1 :(得分:1)

window.setTimeout("populateCount", 1);

此行不正确。您不需要引号(或window.)。它应该只是:

setTimeout(populateCount, 1);

当字符串传递给setTimeout时,它会获得eval d。应该是setTimeout("populateCount()", 1);,但最好将函数传递给setTimeout