Ожидание, бесконечный цикл (?)

440
15 июня 2017, 07:52

Есть функция

jQuery(document).ready(function(){
  ScreenWidth = screen.width;     
  ScreenHeight = screen.height;     
  if (ScreenWidth < 480){
    jQuery(".wishmod").html(" В отложенное");
    setTimeout("jQuery('ymaps').css('display','none')",5000);
  }
  jQuery(".text_zoom").addClass("hidden");
})

Как сделать так, чтоб функция прогонялась каждую секунду, до бесконечности, при том, чтоб это не влияло на работу страницы, ну, чтоб не было загрузки, и торможения, обычный for, while, не работают

Answer 1

Чтобы функция запускалась через какой то промежуток времени можно использовать setInterval

Answer 2

Как вариант, можно использовать рекурсивный setTimeout:

const interval = 1000; 
(function tick(){ 
	// Your code... 
	console.log(performance.now()); 
	// ... Your code 
	setTimeout(tick, interval); 
})();

Преимущества перед setInterval:

  1. чуть проще контролировать выполнение (в случае с setInterval вам надо записать куда-то id и вызывать clearInterval если вы хотите изменить время задержки/прекратить выполнение, в случае с setTimeout вы перед каждым вызовом можете скорректировать задержку следующего выполнения, либо по условию вообще выйти из рекурсии.

  2. если ваш код выполняет какие то долгие вычисления (сравнимые по длительности с самим интервалом), то подход с рекурсией и setTimeout избавит вас от положения, когда старые вычисления еще идут, а вы уже начинаете следующий цикл

Недостатки: Больше печатать.

READ ALSO
Обьект формы для FormData

Обьект формы для FormData

Столкнулся с неудобной проблемой

256
Как настроить background-color для кнопок слайдера?

Как настроить background-color для кнопок слайдера?

ЗдравствуйтеСуть проблемы такова: есть слайдер на Slick

331
Получить запрос с api.ai

Получить запрос с api.ai

Создаю бота на базе apiai сервиса

372