У меня есть следующий код (JavaScript/JQuery), чтобы показать занят индикатор (после задержки) в то время как изображение загрузки:Занят индикатор состояния гонки в Javascript
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.
так что в основном вы пытаетесь реализовать «прогресс загрузки» с JQuery? – TStamper
Да - тот, который не показывает, быстро ли загружается изображение. –
Нет условий гонки - JavaScript однопоточный. Ваша проблема кроется в другом месте. –