Они функционально примерно одинаковы, но есть различия.Одно из различий заключается в том, как браузеры справляются с этим, если doSomething
занимает больше времени, чем интервал.С setInterval
, по крайней мере, некоторые браузеры будут просто пропускать следующий интервал, если doSomething
все еще работает.Поэтому, если вы используете 100 мс, как у вас, а doSomething
требует 110 мс для запуска, следующий прогон не произойдет до 90 мс позже (конечно, все эти времена приблизительны).
Другое отличиечто с setTimeout
вы будете каждый раз получать новый дескриптор, тогда как с setInterval
вы получаете один дескриптор.
Другое отличие от приведенных вами примеров состоит в том, что в примере setTimeout
вывы запускаете парсер / компилятор JavaScript каждый раз , тогда как с setInterval
вы запускаете парсер / компилятор только один раз.Но это различие не должно иметь значения, потому что вы вообще не должны этого делать - см. Ниже.
Но кроме тонкостей, то, что у вас есть, функционально одинаково.
Примечание : Не рекомендуется передавать строки в setTimeout
или setInterval
.Вместо этого передайте ссылку на функцию:
// setTimeout
function myFunction(){
setTimeout(myFunction, 100);
doSomething();
}
setTimeout(myFunction, 100);
// setInterval
function myFunction(){
doSomething();
}
setInterval(myFunction, 100);
Передача строки запускает синтаксический анализатор JavaScript и делает то же самое, что и eval
.Этого следует избегать всякий раз, когда это возможно (и это почти всегда возможно).