Рекурсивный setTimeot и/или setInterval. В чём разница?
Здравствуйте. Сегодня узнал про рекурсивный setTimeout и так и не понял в чём конкретная разница. Ниже приведу примеры, объясните на них если это возможно. Заранее спасибо.
setInterval:
Например у меня есть функция которая выполняется за 1 секунду, и есть setInterval с интервалом 500мс. Если я правильно понял, то setInterval не будет смотреть на то, сколько времени требует для выполнения функция. Она будет всё равно запускать эту функцию каждые 500мс.
И ещё почитал где то, что если функция требует больше времени для выполнения, чем указанный интервал, то setInterval вообще не будет ждать указанной задержки и будет запускаться моментально.
Какая из этих версий - правильнее?
Рекурсивный setTimeout:
Про этот способ тоже не совсем понял. Опять же пример: есть функция, которая выполняется за 1 секунду и интервал c помощью setTimeout к примеру 500 мс. Будет ли ждать setTimeout полного выполнения функции или разница с setInterval в том, что гарантированно функция будет запускаться каждые 500 мс?
У меня вопрос именно про то, чем они отличаются. Конкретной задачи сейчас нет, я просто хочу знать как эти 2 способа работают на самом деле. За ответ спасибо.
Алексей Ярков, я знаю что эти функции делают. Я говорю именно про разницу рекурсивного setTimeout и setInterval. Не про то, что они делают, это я и документации почитаю, а вот про рекурсивный setTimeout не совсем понятно написано, вот и спрашиваю. Попрошу ещё раз прочитать вопрос с примерами, думаю вы поймёте о чём я.
Алексей Ярков, вообщем, если я правильно понял, то рекурсивный setTimeout можно сказать лучше простого setInterval тем, что гарантирует что функция будет запускаться каждые n секунд, которые я указал. А setInterval может "съедать" это время если время выполнения функции больше чем указанный интервал? Всё правильно?
Алексей Ярков, это я понял. В таком случае рекурсивный setTimeout подождёт пока функция обработается? Если например я указал задерждку 1 одну секунду, а функция обрабатывается за 10 секунд, то следующий цикл начнётся через одну или десять секунд?