JavaScript - убедитесь, что конкретная функция вызывается последней (может быть, асинхронно?) - PullRequest
1 голос
/ 16 августа 2011

У меня есть функция ниже в $ (document) .ready (function () {}), которая работает хорошо и заполняет множество полей, в зависимости от просматриваемой записи.Проблема в том, что на записях с большим количеством результатов это выполняется до того, как будет загружено много изображений на сайте (включая основной логотип и индикатор загрузки).Есть ли способ убедиться, что этот код называется LAST?

$('.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 ]

2 голосов
/ 16 августа 2011

Если вам нужно, чтобы что-то произошло после загрузки всех изображений страницы (хотя я не понимаю, почему это желательно), вы можете использовать событие window.onload.

window.onload = function() { alert("Page loaded"); }
1 голос
/ 16 августа 2011
window.setTimeout("populateCount", 1);

Эта строка неверна. Вам не нужны кавычки (или window.). Это должно быть просто:

setTimeout(populateCount, 1);

Когда строка передается в setTimeout, она получает eval d. Это должно было быть setTimeout("populateCount()", 1);, но лучше просто передать функцию в setTimeout.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...