Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.03.2014, 18:53
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Запуск функции с задержкой
Опять у меня проблемы с асинхронностью...
Вобщем есть функция, которая выводит на середину экрана анимацию ожидания.
В данном случае хотелось бы, чтобы было так:

1) я делаю ajax запрос
2) вызываю функцию вывода анимации
3) и хочу чтобы она вывела картинку не сразу, а через 500мс

Как работает setTimeout я понимаю. Например

function foo(){
    /***/
}

// ... before timeout
setTimeout(foo, 500);
// ... after timeout

Функция foo() будет вызвана как минимум через 500мс после установки таймаута. Но может быть пройдет больше времени, так как вызов функции foo() по любому будет вырван из потока и поставлен в очередь после выполнения всего скрипта.
То есть, если после установки таймаута, скрипт будет работать еще 1000мс, то по его завершении и будет вызвана foo().

И я так понимаю, нет способа вызвать функцию четко через определенное время?
Ответить с цитированием
  #2 (permalink)  
Старый 31.03.2014, 19:03
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от Hapson
И я так понимаю, нет способа вызвать функцию четко через определенное время?
Правильно понимаешь. Есть один поток. И если он занят, то надо ждать, пока он освободится.
Ответить с цитированием
  #3 (permalink)  
Старый 31.03.2014, 19:12
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Сообщение от Sweet
Правильно понимаешь. Есть один поток. И если он занят, то надо ждать, пока он освободится.
Жаль... как же хреново что поток один.
Ответить с цитированием
  #4 (permalink)  
Старый 31.03.2014, 19:23
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

для длительных операций, чтобы не блокировать основной поток, придумали воркеры
Ответить с цитированием
  #5 (permalink)  
Старый 31.03.2014, 19:50
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

в большинстве CRUD приложений достаточно css-анимаций

angularjs + animatecss
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #6 (permalink)  
Старый 31.03.2014, 19:52
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Сообщение от Octane
для длительных операций, чтобы не блокировать основной поток, придумали воркеры
??? Ху из ис воркеры?
Ответить с цитированием
  #7 (permalink)  
Старый 31.03.2014, 19:56
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Сообщение от nerv_
в большинстве CRUD приложений достаточно css-анимаций
Прикольно )))
У меня так получилось
$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;

}());
Ответить с цитированием
  #8 (permalink)  
Старый 31.03.2014, 20:20
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Octane,
Про это говоришь?
http://www.xiper.net/learn/javascrip...b-workers.html
Ответить с цитированием
  #9 (permalink)  
Старый 31.03.2014, 22:02
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

да
Ответить с цитированием
  #10 (permalink)  
Старый 01.04.2014, 17:58
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Octane,
Классная вещь, эти воркеры)))
Жаль что старые ишаки опять все обгадили.
Не так давно написал я скрипт подсветки синтаксиса. Хорошо бы переделать его под воркер, так как на коде в 50000 символов браузер вешается. Но блин получается нужно все равно иметь две версии скрипта - с воркером и без.
Если бы IE 8-9 поддерживали воркеры, то на IE < 8 можно было бы забить, а так... хреново вобщем, как всегда...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отложенный запуск функции Glook jQuery 1 13.03.2012 23:38
запуск функции через событие radio DmitryT Элементы интерфейса 5 05.03.2011 09:26
Запуск при редиректе некой js функции Dorsaj Элементы интерфейса 0 22.10.2010 15:05
Запуск Lightbox вручную из функции ZneP Events/DOM/Window 2 12.08.2010 17:26
Запуск функции если mouseout frolvict Общие вопросы Javascript 10 27.04.2010 16:16