Показать сообщение отдельно
  #13 (permalink)  
Старый 06.09.2021, 12:07
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от uzlprog
Задача такая: есть массив данных arr, мне нужно стряпать функцию, которая бесконечно (по кругу) перебирает значения каждого элемента массива через определенное время (1 сек) и присваивает это значение переменной a. При обращении она должна возвращать текущее значение переменной а.
function createFunc(arr, interval) {
    let i = 0;
    setInterval(() => { i = (i + 1) % arr.length; }, interval);
    return () => arr[i];
}


const func = createFunc([11, 22, 33, 44], 1000);

...

// будет возвращать тот элемент массива, который сейчас выбран. 
// выбор меняется раз в секунду по кругу
alert(func());


как вариант, можно добавить в функцию останавливатель и запускатель таймера, но кажется это сейчас без надобности.
так же - запускать таймер при первом вызове функции, а не при создании. Это надо?

Последний раз редактировалось Alexandroppolus, 06.09.2021 в 12:14.
Ответить с цитированием