Задержка в задержке
Это как "нужно смотреть ещё глубже (с)" :haha:
Вообщем такая проблема - хочу сделать чтоб выполнялось что-то вроде такого:
function intv() {
var i = 0;
var j = 0;
var interval_1 = setInterval(function(){
console.log("out = " + i);
var interval_2 = setInterval(function(){
console.log("in = " + j);
j++;
if (j == 2) {
j = 0;
clearInterval(interval_2);
}
}, 5000);
i++;
if (i == 2) {
clearInterval(interval_1);
}
}, 3000);
}
intv();
Т.е. чтоб цикл крутился с задержкой, и на каждой его итерации выполнялся внутренний цикл со своей задержкой. Но уже сколько пробую и с интервалом и с таймаутом, ну никак не могу добиться нужного результата :-/ В идеале бы получить: Код:
out = 0Код:
out = 0 |
Цитата:
|
ps - Хотя, я наверное глупость написал через интервалы...
Извиняюсь за эту тему... и если можно, пусть модераторы удалят :) |
Да почему-то я всё думал что внешний интервал будет 100% ждать завершения внутреннего, а оно же не так...
|
Будет ждать если внутренний отключит внешний. Вы мыслите геометрически, а тут надо мыслить хронометрически.
|
Цитата:
Цитата:
var start = new Date; // в функции интервала var now=new Date; if(now-start<100) return; |
Всё равно не пойму до конца.
var abc_counter = 0;
function abc() {
var abc_Timeout = setTimeout(function() {
console.log("setTimeout 1000");
abc_counter++;
if (abc_counter < 5) {
abc();
} else {
clearTimeout(abc_Timeout);
}
},1000);
}
abc();
Всё классно - пробегает 5 раз по 1 секунде. А как правильно внутрь каждого выполнения всунуть ещё одну функцию с задержкой, но так, чтоб пока она не выполнится то следующий виток внешней не начнётся ? Вроде бы, логически переделываю в такое, но выходит что неправильно.(и да, с тиками не понял честно говоря как именно их использовать)
var abc_counter = 0;
var inner_abc_counter = 0;
function abc() {
var abc_Timeout = setTimeout(function() {
console.log("setTimeout 1000");
inner_abc();
function inner_abc() {
var inner_Timeout = setTimeout(function() {
console.log("setTimeout 500");
inner_abc_counter++;
if (inner_abc_counter < 3) {
inner_abc();
} else {
clearTimeout(inner_Timeout);
}
},500);
}
inner_abc_counter = 0;
abc_counter++;
if (abc_counter < 5) {
abc();
} else {
clearTimeout(abc_Timeout);
}
},1000);
}
abc();
|
| Часовой пояс GMT +3, время: 15:19. |