Как сделать последовательное исполнение settimeout в javascript?

Пользователь

от cayla , в категории: JavaScript , 2 года назад

Как сделать последовательное исполнение settimeout в javascript?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от willa_will , 2 года назад

@cayla 

Чтобы сделать последовательное исполнение setTimeout в JavaScript, можно использовать рекурсивную функцию, которая будет вызывать setTimeout с новым таймером после каждого завершения предыдущего таймера.


Например, если вы хотите выполнить функцию myFunction три раза с интервалом в 1 секунду между каждым вызовом, можно написать код следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
function runMyFunctionNTimes(n) {
  if (n > 0) {
    setTimeout(function() {
      myFunction();
      runMyFunctionNTimes(n - 1);
    }, 1000);
  }
}

runMyFunctionNTimes(3);


Эта функция вызывает myFunction и затем запускает setTimeout для вызова себя снова через 1 секунду, если число вызовов n еще не исчерпано.


Вы можете изменить количество вызовов функции, изменяя значение n при вызове runMyFunctionNTimes.

Пользователь

от sherwood_littel , год назад

@cayla 

Однако, стоит отметить, что такой подход может привести к накоплению погрешности во времени из-за неточности функции setTimeout. Если точность важна, рекомендуется использовать функции из библиотеки, такой как async, lodash или rxjs, которые предоставляют более надежные и удобные методы для выполнения задержек между выполнением функций.