Почему и как ссылка на переменную в console.log могла исправить ошибку загрузки, которая у меня была? - PullRequest
4 голосов
/ 11 декабря 2011

Мне трудно это понять, и мне не нравится «решение», поскольку оно действительно не должно решить мою проблему.

У меня есть функция, которая 40% времени не следует полностью, хотя. Сначала я подумал, что это из-за того, что я управлял элементами img и iframe на лету, однако я сделал разные вещи, чтобы убедиться, что кэш и загрузка отсортированы, прежде чем они сделают свое дело.

В частности, то, что я делал с переменной newCover, выполнялось само по себе только в 60% случаев. В моем разочаровании я утешил консоль newCover прямо в конце функции, чтобы попытаться понять, почему она просто иногда не появляется.

Но как ни странно, потому что я записываю переменную в консоль, я получаю 100% -ную вероятность успеха, когда функция делает то, что должна.

Почему это?!

Вы можете увидеть, как он работает над третьим постом здесь: http://syndex.me

Вот код:

albumCover = function(){
$(".forPhotoset").each(function () {
    var forPhotoset = $(this);
    var myFrame = forPhotoset.find("iframe");
    myFrame.hide();
    myFrame.load(function(){
        var newCover = myFrame.contents().find('.photoset').children(':first-child').children(':first-child');
        newCover.children(':first-child').remove();
        var psPre = newCover.attr("href")+ '?' + (Math.random() * 1);
        newCover.append("<img src='"+ psPre +"' alt='Cover Page' />");
        var psHeight = newCover.find('img');
        psHeight.load(function(){
            if (psHeight.height()>heightRef){
                psHeight.height(heightRef);
            }
        })
        newCover.detach();
        forPhotoset.append(newCover); //only executes 60% of the time
        console.log(newCover);//i added this, now i get 100% success rate?!
    })
});
}

1 Ответ

0 голосов
/ 27 октября 2015

Немного догадываюсь, но может случиться так, что вызов console.log немного замедляет синхронизацию скрипта и позволяет другим изменениям домена больше времени завершать.Может быть, попробуйте обернуть ваш вызов в setTimeout (), чтобы увидеть, имеет ли это тот же эффект, что и вызов console.log.

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