Проблема с 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, время: 11:22. |