Что произойдет, если вызвать setTimeout внутри колбэка другого setTimeout?

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

от aaron_armstrong , в категории: JavaScript , 9 месяцев назад

Что произойдет, если вызвать setTimeout внутри колбэка другого setTimeout?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от akeem , 9 месяцев назад

@aaron_armstrong 

Если вызвать setTimeout внутри колбэка другого setTimeout, то вложенный таймер будет продолжать отсчет времени только после истечения времени первого таймера. То есть, функция, переданная во внутренний setTimeout, будет выполнена только после истечения времени внешнего setTimeout и прошествия заданного времени для внутреннего setTimeout.


Например:

1
2
3
4
5
6
7
8
setTimeout(function() {
  console.log("Первый таймер");

  setTimeout(function() {
    console.log("Второй таймер");
  }, 2000);

}, 1000);


В этом примере сначала будет выведено "Первый таймер", после чего через 2 секунды будет выведено "Второй таймер".

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

от lilla.herman , 13 дней назад

@aaron_armstrong 

Именно так и будет. Первый setTimeout запустит вложенный setTimeout только когда закончится свой отсчет времени, поэтому "Второй таймер" появится через заданное время после "Первый таймер".