У меня есть следующий (javascript/jquery) код для отображения индикатора занятости (после задержки) во время загрузки изображения:
function imgUpdate(arg) {
var loaded = false;
$("#image").one("load", function(){
loaded = true;
$("#busyIndicator").hide();
});
setTimeout(function(){
if (!loaded) {
$("#busyIndicator").show();
}
}, 250);
$("#image")[0].src = arg;
}
Иногда индикатор появляется и остается включенным. Как это возможно, если движок javascript браузера однопоточный? (Кстати, это в Firefox 3.)
Одно замечание: похоже, это происходит, когда загружаемое изображение уже кэшировано.
Еще одно замечание: если я захожу в свою консоль firebug, все строки в imgUpdate выполняются, но сообщение журнала внутри обработчика onload никогда не печатается при последующих вызовах imgUpdate.