Как ограничить вызов функции в цикле, ровно 1 раз за итерацию?

175
20 августа 2018, 16:40

Есть цикл с 5 итерациями, каждая длиться по 15 секунд, в цикл помещена функция, задача, ограничить вызов функции на каждой итерации. Проловал установление флага, но тогда функция вызывается 1 раз вообще.

Answer 1

Вы, кажется, забыли отметить один из данных Вам ответов (Как реализовать цикл с определенным временем существования итерации ?) как принятый - знак "галочка" слева от ответа.

var flagRunning = false; 
function iteration(left) { 
  if (flagRunning) { 
    console.log("Cannot run - already running."); 
    return; 
  } 
  flagRunning = true; 
  console.log("steps left: ", left); 
  // do something useful 
  if (--left > 0) { 
    setTimeout(function(aLeft) { 
      flagRunning = false; 
      iteration(aLeft); 
    }, 1500/*change this to 15000*/, left); 
  } else { 
    flagRunning = false; 
    console.log("Can run again."); 
  } 
} 
 
iteration(5);
<button onclick="iteration(5)">Click</button>

READ ALSO
Как перебрать массив?

Как перебрать массив?

Мне нужно перебрать массив из двух значений, чтобы на выходе получить все значения между нимиНапример: ['10-07-2018', '18-07-2018'] = > ['11-07-2018', '12-07-2018',...

202
всплывающая форма jQuery

всплывающая форма jQuery

Да вроде нормально всё

197
Проблема с рендерингом списков в React

Проблема с рендерингом списков в React

Пытаюсь вытащить из API сервиса данные и вставить их в компонент

228