Я просматриваю какой-то существующий код в веб-приложении. Я видел это:Является ли setTimeout без задержки так же, как выполнение функции мгновенно?
window.setTimeout(function() { ... })
Это то же самое, только выполняя содержание функции сразу?
Я просматриваю какой-то существующий код в веб-приложении. Я видел это:Является ли setTimeout без задержки так же, как выполнение функции мгновенно?
window.setTimeout(function() { ... })
Это то же самое, только выполняя содержание функции сразу?
Он не обязательно будет запускаться сразу, и не будет явно устанавливать задержку на 0. Причина в том, что setTimeout удаляет функцию из очереди выполнения, и она будет вызываться только после завершения JavaScript с текущей очередью выполнения.
console.log(1);
setTimeout(function() {console.log(2)});
console.log(3);
console.log(4);
console.log(5);
//console logs 1,3,4,5,2
подробнее см http://javascriptweblog.wordpress.com/2010/06/28/understanding-javascript-timers/
Существует минимальная задержка, которую использует setTimeout
(4 мс в соответствии с HTML5, Firefox 3.6 использует 10 мс). Об этом сообщается в Центре разработчиков Mozilla documentation page.
Собственно, см. Другие ответы для правильного объяснения! – Qwerty
Вы пропускаете параметр миллисекунды ...
setTimeout(function() { /*something*/ }, 0);
0 устанавливает задержку в 0, но что она делает это, чтобы ваша функция «прыгать очереди» списка выполнения браузера. В браузере есть куча вещей, таких как рендеринг объектов на странице, и, позвонив по этому поводу, ваша функция будет запущена, как только у браузера будет несколько циклов.
В этом вопрос ... вопрос о том, что происходит, когда нет задержки ... –
О, ладно. Я думал, что это синтаксическая ошибка, так как различные документы утверждают, что это требуемый параметр. Затем я попробовал быстро, и это сработало. – Gary
Второй параметр (больше?) Требуется https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout –
Aishwar, вы могли бы принять ответ angusC в? То, что вы приняли, не совсем правильно, и angusC показывает, почему. – Lynn