shevchenkonik
@shevchenkonik

Как задать вызов функции в определенное время?

Необходимо вызывать функцию в определенное время (секунды) после какого-то действия (например, загрузки страницы).

Через интервал я понимаю каким образом, а n кол-во раз через разные секунды нет. Какие есть способы решения?

Необходимо по хорошему брать массив с секундами и по нему проходиться.

Спасибо
  • Вопрос задан
  • 758 просмотров
Пригласить эксперта
Ответы на вопрос 3
В колбеке интервала очищайте текучий через clearInterval и создавайте новый. И так бесконечно.
Ответ написан
Комментировать
dicem
@dicem
Берем
$( document ).ready(function() {

var someFn = function()
{
  console.log( (new Date) );
};

var i = 0;
var  max = 10;
var _interval = setInterval(function() {
  if( i < max )
  {
    someFn();
    i++;
  } else {
    clearInterval( _interval );
  }
}, 1000);


});


где max - кол-во итераций
ну и someFN() - нужная функция
Ответ написан
function callByTimeouts(handler, timeouts) {
	var startTime = Date.now();
	var currentIndex = 0;

	var timer = setInterval(function () {
		var currentTime = Date.now();
		var nextCallTime = startTime + timeouts[currentIndex];

		if (currentTime < nextCallTime) return;

		handler();

		var nextIndex = currentIndex + 1;

		if (nextIndex < timeouts.length) {
			currentIndex = nextIndex;
		} else {
			clearInterval(timer);
		}
	}, 100);
}

callByTimeouts(function () {
	console.log('qwerty');
}, [1000, 2500, 7500]);
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы