Как приостановить выполнение цикла for в JavaScript? [дубликат]

356
22 февраля 2017, 23:05

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

  • Как вернуть значение из события или из функции обратного вызова? 2 ответа

Здравствуйте! В коде есть цикл for со счётчиком j. В теле цикла выполняется глобально определённая функция example(), длительность выполнения которой составляет от 24 секунд.

example = function(d) {};   
$('#button').click(function(){
    for (j; j<=num; j++) {
        example(j); 
    };      
});

При выполнение цикла возникает проблема. Цикл выполняется очень быстро, создавая num-е число считай параллельных запусков функции example(). Как сделать ожидание завершения функции example() и только потом продолжить цикл и инкрементировать j. Функция example ничего не возвращает, но если надо могу дописать return.

UPD1: Видя бурные обсуждения, скидываю код функции.

example = function(d) {                 
    function startTrackInterval(day) {
      if (day) effectController.day=day;
      effectController.hour=0;
      var timerId = setInterval(function() {
        if (effectController.hour > 24) clearInterval(timerId);
        else {
        gui.updateDisplay();
        tracker();
        };
        effectController.hour=effectController.hour+0.01;
      }, 10);
    }
    startTrackInterval(d);
}   
Answer 1

Можно попробывать так:

var i = 1;                     
var rtr = 0;
var num = 5;
function myLoop () {           
   setTimeout(function () {    
      example(i);           
      i++;                     
      if (i < num) {           
         myLoop();             
      }                     
   }, 25000)              // Время выполнения функции
}
myLoop();  
READ ALSO
Не работает функция Jquery?

Не работает функция Jquery?

Есть две кнопки

271
Калькулятор с коэфицентом

Калькулятор с коэфицентом

Есть 2 поля select, в каждом из них по 18 значений, от 1 до 18

225
Не удается добавить элементы в свг динамически

Не удается добавить элементы в свг динамически

Добавляю следующий код(пытаюсь добавить элемент в svg) но не получется,поясните как поправить

254
Flexbox: space-between ведет себя как space-around

Flexbox: space-between ведет себя как space-around

В коде ничего лишнего:

311