У меня есть следующий код (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.