parce56
@parce56
Системный аналитик

Как сделать ожидание выполнения функции в JavaScript?

В цикле for происходит вызов функции imitate(j), которая выполняет анимацию в WebGL и длится 24 секунды.

Цикл:
for (j; j<=finDay; j++) { 
	imitate(j); 
};


Функция:
imitate = 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);
						
				}


Как сделать в цикле ожидание выполнения функции и только потом инкрементировать j?
Если это не сделать, то JS запускает практически параллельно finDay-е число копий функции и на рендере получается мешанина.
P.S.: Читал про колбеки и промисы, но не смог применить их.
  • Вопрос задан
  • 3093 просмотра
Пригласить эксперта
Ответы на вопрос 1
@vshvydky
Если функция с колбеком надо обернуть ее в промис, чтобы работать с промисами синхронно, нужно либо использовать рекурсивный вызов промисов один за другим, либо в цикле фор но в асинк функции с прерываниями на авайт
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы