Интервал выполнения действия [дубликат]

227
11 мая 2018, 11:54

На данный вопрос уже ответили:

  • Почему асинхронная функция внутри цикла выполняет последнюю итерацию много раз? 2 ответа

Не могу понять. как в js сделать интервал выполнения для нескольких объектов.

Например, есть такой массив

var data = {
    data1:{
        increment:1,
        innerTo:"#elem"
    },
    data2:{
        increment:20,
      innerTo:"#elem2"
    },
    dataN:{
        increment:400,
      innerTo:"#elemN"
    }
};

Он динамический, то есть данные могут добавляться и удаляться. Как сделать с заданным интервалом времени обход этого списка и для каждого данного выполнять определенные действия, которые там указаны?

например для data1 каждую секунду увеличивать значение на 1 и вставлять в элемент. Для второго увеличивать каждую секунду на 2 и вставлять в другой элемент. И такой список может изменяться.

Answer 1

Вот так через setInterval:

data = [  
        { increment:1, timer: 1000, innerTo :"elem1" }, 
        { increment:1, timer: 2000, innerTo:"elem2" }, 
        { increment:1, timer: 3000, innerTo:"elem3" } 
] 
 
for(let el of data) { 
    setInterval( () => { 
       document.getElementById(el.innerTo).innerHTML = el.increment++; 
    }, el.timer); 
}
<div id='elem1'>1</div> 
<div id='elem2'>1</div> 
<div id='elem3'>1</div>

READ ALSO
Проверка содержимого div через jquery

Проверка содержимого div через jquery

Задача - проверить пуст ли div ? Содержимое в div подгружается через ajax, по мимо этого есть скрипт которые при определённых условиях выводит звуковое...

231
Не запускаются тесты для React из директории test

Не запускаются тесты для React из директории test

Изучаю тестирование реакт-приложенийИсходники моего проекта располагаются в директориях src и components

202
Плавный скролл по обьектам

Плавный скролл по обьектам

Как сделать плавный скролл, нужно что бы определял где в ссылке указан #эбаути перелистывал на секцию где айди эбаут

214