Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.02.2017, 04:10
Новичок на форуме
Отправить личное сообщение для zeee Посмотреть профиль Найти все сообщения от zeee
 
Регистрация: 27.02.2017
Сообщений: 4

Проблема с setInterval
Всем привет!

У меня есть такой код:

----- подробнее о нем -----

schedule({
'subject 1' : '4',
'subject 2' : '3',
'subject 3' : '1',
'subject 4' : '2'
});

это:

schedule({
'предмет 1' : 'время выполнения(в минутах)',
'предмет 2' : 'время выполнения(в минутах)',
'предмет 3' : 'время выполнения(в минутах)',
'предмет 3' : 'время выполнения(в минутах)',
});


----- задача -----

выводить название предметов последовательно, по истечению времени:
'subject 1' : '4', //через 4 минуты выведи название предмета
'subject 2' : '3', //через 3 минуты выведи название предмета
и т.д.
то есть когда выведется 1й предмет пройдет 4 мин, когда 2й уже 7 мин(так как после 1го предмета прошло 4 мин + 3 после 2го) и т.п.

----- проблема -----

названия предметов выводятся не последовательно.


----- p/s. -----

Так же я ускорил процесс, 1 секунда - это в этой проге не секунда а 10 миллисекунд
просто чтобы быстрее тестировать.

Последний раз редактировалось zeee, 27.02.2017 в 04:15.
Ответить с цитированием
  #2 (permalink)  
Старый 27.02.2017, 08:37
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от zeee
названия предметов выводятся не последовательно
Не совсем понятно зачем тут setInterval()...
Дело в том, что ключи в объекте могут храниться как угодно. Четкую последовательность "прохода" может задавать только сам программист.
Ответить с цитированием
  #3 (permalink)  
Старый 27.02.2017, 13:52
Новичок на форуме
Отправить личное сообщение для zeee Посмотреть профиль Найти все сообщения от zeee
 
Регистрация: 27.02.2017
Сообщений: 4

я об этом зная и массивы использовал(вложенные) вместо объекта, думал что тоже что-то с объектом не так, но все так же было.
Насколько я понимаю, js пытается оптимизировать процесс с setInterval выставляя все по порядку в соответсвии со временем.
Суть задачи:выводить название предметов последовательно, по истечению времени.
Если что-то предложите для решения этой задачи вместо setInterval буду только рад.
Ответить с цитированием
  #4 (permalink)  
Старый 27.02.2017, 14:01
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от zeee
Если что-то предложите для решения этой задачи вместо setInterval буду только рад.
Для одноразовой отсрочки есть setTimeout()...
Ответить с цитированием
  #5 (permalink)  
Старый 27.02.2017, 14:27
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от zeee
Если что-то предложите для решения этой задачи
Типа того...

<script type='text/javascript'>
window.onload=function(){
	var a=[
		{txt: 'Text 0', time: 1000},
		{txt: 'Text 1', time: 1000},
		{txt: 'Text 2', time: 1000}
	];
	test();
	function test(Itm){
		Itm=Itm||0;
		if (a[Itm]) {
			var tim=a[Itm].time;
			setTimeout(function(){
				var o=document.createElement('p');
				o.innerHTML=a[Itm].txt;
				document.getElementById('test').appendChild(o);
				test(Itm+1);
			},tim);
		}
	};
};
</script>
<div id='test'></div>
Ответить с цитированием
  #6 (permalink)  
Старый 27.02.2017, 14:56
Новичок на форуме
Отправить личное сообщение для zeee Посмотреть профиль Найти все сообщения от zeee
 
Регистрация: 27.02.2017
Сообщений: 4

Решение хорошее, спасибо.
Но все же прога там посложнее. Я и задал в принципе setInterval для того чтобы отсчитывать минуты и отображать их на экране.
+Очень интересно, как избавится от такой последовательности не последовательной в setInterval.
Ответить с цитированием
  #7 (permalink)  
Старый 27.02.2017, 15:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от zeee
Но все же прога там посложнее.
Это сути не меняет...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ускоряется setInterval Tord002 Общие вопросы Javascript 1 10.12.2015 23:09
проблема с setInterval / clearInterval max0n Общие вопросы Javascript 4 11.09.2012 12:12
Проблема с setInterval и clearInterval kat-khmara Events/DOM/Window 5 25.06.2012 16:52
проблема с автообновлением setinterval luncharra Мобильный JavaScript 0 08.04.2011 12:13
Проблема в document.write при использовании setInterval() GOll Общие вопросы Javascript 21 06.10.2008 17:38