Проблема с 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 миллисекунд просто чтобы быстрее тестировать. |
Цитата:
Дело в том, что ключи в объекте могут храниться как угодно. Четкую последовательность "прохода" может задавать только сам программист. |
я об этом зная и массивы использовал(вложенные) вместо объекта, думал что тоже что-то с объектом не так, но все так же было.
Насколько я понимаю, js пытается оптимизировать процесс с setInterval выставляя все по порядку в соответсвии со временем. Суть задачи:выводить название предметов последовательно, по истечению времени. Если что-то предложите для решения этой задачи вместо setInterval буду только рад. |
Цитата:
|
Цитата:
<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> |
Решение хорошее, спасибо.
Но все же прога там посложнее. Я и задал в принципе setInterval для того чтобы отсчитывать минуты и отображать их на экране. +Очень интересно, как избавится от такой последовательности не последовательной в setInterval. |
Цитата:
|
Часовой пояс GMT +3, время: 06:44. |