Почему Internet Explorer такой тормоз?

Beckie

Новичок
Почему Internet Explorer такой тормоз?

Я уже запарился таймауты использовать.

function blocking() {setTimeout(function(){$('#upload_container').css('visibility','hidden');},2000);}
function unblocking() {setTimeout(function(){$('#upload_container').css('visibility','visible');},2000);}

Причем флэш никаких действий в ближайшую секунду не посылает:
Из флэеша -> setTimeout(create_platform,1000);

Если ставить меньше 2 секунд, то виснет и дальнейшие функции не выполняются.

Я так понимаю, что если не дождаться конца текущего действия, то последующие действия вешают IE.

Как вы вообще боритесь с этим явлением, точнее чудом Microsoft?

Я вообще молчу про gif анимацию, которая виснет почти мгновенно...

Я тут думал, может к каждой функции привязывать в конце return true, а на стороне флеша дефолтовый флаг ставить false и проверять через timeout каждые 500милисек, вернулся ли true от функции или нет.

Помоему единственный способ или есть какие-то другие методы?
 

dimagolov

Новичок
Beckie, проблема в том коде, который ты хочешь выполнить по setTimeout. дело в том, что setTimeout ставится в очередь исполнения и ждет освобождения интерпретатора безальтернативно, а вот по setInterval ставится в очередь только если в очереди нету еще не выполненного вызова "предидущего поколения". другими словами, если сам вызываемый код исполняется дольше задержки, то получаем штопор и 100% загрузку проца при setTimeout.

ты в начале оцени сколько выполняется код $('#upload_container') по времени. потому что подозреваю, что этот вызов может быть весьма затратным по ресурсам.

п.с. в JS многопоточности нету.
п.п.с. производительность JS в ИЕ действительно в разы ниже, чем в ФФ или Хроме.
 
Сверху