Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Работа таймеров (https://javascript.ru/forum/events/41373-rabota-tajjmerov.html)

Mkaa 11.09.2013 01:16

Работа таймеров
 
Очень большое дополнение ниже


Есть Таймер, который каждые 300мс запускает еще таймер который должен сработать 1 раз через 1000мс.
В итоге таймер, который срабатывает через секунду работает не корректно.
function ITTIMER300SECRUN( ){ randy=rand(1,8);
		
		hostile[cLvl][pLvl][randy][8] ="z";
		oldxMage=8;
		oldyMage=randy;
		
		var tY=setInterval(function(){
		var _y=oldyMage;
		var _x=oldxMage-1;
		delZ(_y,_x);
		hostile[cLvl][pLvl][_y][_x]="5";
		clearTimeout(tY);
		}, 1000);

}

Мне бы хотелось узнать как создать локальный таймер. :help:

Arramis 11.09.2013 13:56

Цитата:

Сообщение от Mkaa (Сообщение 271778)
Есть Таймер, который каждые 300мс запускает еще таймер который должен сработать 1 раз через 1000мс.

var id = setInterval(function() {

	console.log("test");
		
	setTimeout(function() {

			   clearInterval(id);

			   }, 1000);
			   
}, 300);

Цитата:

Сообщение от Mkaa (Сообщение 271778)
В итоге таймер, который срабатывает через секунду работает не корректно.

setInterval() останавливается так :
var setIntervalId = setInterval( ... );
clearInterval(setIntervalId);

Mkaa 12.09.2013 00:21

Цитата:

clearInterval(id);

Зачем вырубать?

рони 12.09.2013 01:18

Mkaa,
запускаите интервал
Цитата:

var tY=setInterval
а останавливаите таймер
Цитата:

clearTimeout(tY);

Mkaa 12.09.2013 20:41

:help:
var magTimer=setInterval(MageAction,1000);

function MageAction() {


  randx = 1;
  if (randx == 1) {
    randy = rand(1, 8);

    hostile[cLvl][pLvl][randy][8] = "z";
    oldxMage = 8;
    oldyMage = randy;
    var time = new Date();
    console.log(time + "CREATE" + "||" + randy + ":" + oldxMage);
    var tY = setInterval(function () {

      var time = new Date();
      console.log(time + "УДАЛЯЮ");
      var _y = oldyMage;
      var _x = oldxMage - 1;
      if (cLvl == 3) {
        hostile[cLvl][pLvl][_y][_x] = "5";
      }
      var time = new Date();
      console.log(time + "УДАЛЯЮ" + "||" + _y + ":" + (++_x));
      hostile[cLvl][pLvl][_y][(_x + 1)] = 0;
      console.log(tess);
      tess++;
      clearInterval(tY);

    }, 3000);


  }

Поднимаю тему уже с дополнением.
Выше код которые нужно довести до ума.
А именно разобраться с принципом работы Таймера.

Уже начал отлавливать каждую секунду
и в итоге получаю:
Thu Sep 12 2013 20:31:25 GMT+0400 (Московское время (зима))CREATE|| 4:8 №1
Thu Sep 12 2013 20:31:26 GMT+0400 (Московское время (зима))CREATE|| 8:8 №2
Thu Sep 12 2013 20:31:27 GMT+0400 (Московское время (зима))CREATE|| 1:8 №3
Thu Sep 12 2013 20:31:28 GMT+0400 (Московское время (зима))CREATE|| 4:8
Thu Sep 12 2013 20:31:28 GMT+0400 (Московское время (зима))УДАЛЯЮ|| 4:8 №1
Thu Sep 12 2013 20:31:29 GMT+0400 (Московское время (зима))УДАЛЯЮ|| 4:8 №2
Thu Sep 12 2013 20:31:29 GMT+0400 (Московское время (зима))CREATE|| 4:8
Thu Sep 12 2013 20:31:30 GMT+0400 (Московское время (зима))УДАЛЯЮ|| 4:8 №3
================================================== ============================
Выясняется, что переменные _x и _y изменяются после каждого действия [CREATE], но если я создаю локальный таймер, внутри имеются тоже локальные переменные, то почему так происходит?????
Или что? Происходит не присваивание, а указание на данные чтоль?:help:

рони 12.09.2013 21:06

Mkaa,
может почитать http://learn.javascript.ru/settimeout-setinterval
а пока ваши шифровки до центра не дошли

Mkaa 12.09.2013 21:16

Цитата:

шифровки до центра не дошли
Что?

Mkaa 12.09.2013 22:05

Разобрался сам, Глобалки такие Глобалки.


Часовой пояс GMT +3, время: 23:35.