Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с замыканиями (https://javascript.ru/forum/misc/49730-pomogite-s-zamykaniyami.html)

betmanenko 26.08.2014 16:23

Помогите с замыканиями
 
Здравствуйте. проблема такова: нужно для каждой линии в массиве задать свой setInterval со своим интервалом. Пытаю в цикле сделать это при помощи замыканий, однако функции отрабатывают только 1 раз после отрисовки страницы :c. Укажите на ошибки плз

вызов setinterval в цикле
setInterval(function(x){
            repaint(x);
        }(i), function(x){return x}(lines[i].updateTime));


полный проект
http://jsfiddle.net/jsuLgpeg/

skrudjmakdak 26.08.2014 16:40

почитайте про метод bind который есть у функции
function start(name)
	{
	console.log(name);
	}

var ar = {
	one: 1000,
	two: 800,
	three: 2100};

for(prop in ar)
	setInterval(start.bind(null, prop), ar[prop]);

Pavel M. 26.08.2014 16:56

Цитата:

Сообщение от betmanenko
Пытаю в цикле сделать это при помощи замыканий

с замыканием можно так
function start(name) {
	console.log(name);
}

var ar = {
	one: 1000,
	two: 800,
	three: 2100};

for(prop in ar) 
  setInterval((function (p) {
      return function () { start(p); };
  })(prop), ar[prop]);

skrudjmakdak 26.08.2014 16:58

Pavel M., так писали, когда ходили динозавры ;)

http://learn.javascript.ru/bind

betmanenko 26.08.2014 17:10

Премного благодарен.

MallSerg 26.08.2014 17:36

Ты перестраиваешь разметку и перерисовываешь страницу по таймеру еще и над массивом объектов так делать не стоит

это не так страшно если интервалы на изменения стоят минуты но меньше 100 это уже очень плохо


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