Запуск функции с задержкой
:) Опять у меня проблемы с асинхронностью...
Вобщем есть функция, которая выводит на середину экрана анимацию ожидания. В данном случае хотелось бы, чтобы было так: 1) я делаю ajax запрос 2) вызываю функцию вывода анимации 3) и хочу чтобы она вывела картинку не сразу, а через 500мс Как работает setTimeout я понимаю. Например function foo(){ /***/ } // ... before timeout setTimeout(foo, 500); // ... after timeout Функция foo() будет вызвана как минимум через 500мс после установки таймаута. Но может быть пройдет больше времени, так как вызов функции foo() по любому будет вырван из потока и поставлен в очередь после выполнения всего скрипта. То есть, если после установки таймаута, скрипт будет работать еще 1000мс, то по его завершении и будет вызвана foo(). И я так понимаю, нет способа вызвать функцию четко через определенное время? |
Цитата:
|
Цитата:
|
для длительных операций, чтобы не блокировать основной поток, придумали воркеры
|
|
Цитата:
|
Цитата:
У меня так получилось $G.waitAnimated = (function(){ var waitAnimated = {}, work = true, divID = "waiting_animated"; function start(){ if(!work){return;} var WinH = document.documentElement.clientHeight; var WinW = document.documentElement.clientWidth; var div = document.createElement("DIV"); var img = document.createElement("IMG"); img.setAttribute("src", window.location.protocol +"//"+ window.location.hostname +"/media/global/images/wait_animated.gif"); div.appendChild(img); div.style.position = "fixed"; div.style.top = (WinH / 2 - div.offsetHeight / 2) +"px"; div.style.left = (WinW / 2 - div.offsetWidth / 2) +"px"; div.style.zIndex = "1000000"; div.setAttribute("id", divID); document.body.appendChild(div); } waitAnimated.set = function(delay){ typeof delay === "number" ? setTimeout(start, delay) : start(); }, waitAnimated.remove = function(){ work = false; var image = document.getElementById(divID); if(image !== null){document.body.removeChild(image);} } return waitAnimated; }()); |
|
да
|
Octane,
Классная вещь, эти воркеры))) Жаль что старые ишаки опять все обгадили. Не так давно написал я скрипт подсветки синтаксиса. Хорошо бы переделать его под воркер, так как на коде в 50000 символов браузер вешается. Но блин получается нужно все равно иметь две версии скрипта - с воркером и без. Если бы IE 8-9 поддерживали воркеры, то на IE < 8 можно было бы забить, а так... хреново вобщем, как всегда... |
Часовой пояс GMT +3, время: 11:13. |