поведение setTimeout немного запутанно, все прочитанные мной ресурсы указывают, что при отсутствии задержки задание добавляется до конца очереди и выполняется, когда интерпретатору ничего не остается (пустая очередь?). однако, принять следующий пример:есть разница между setTimeout (fun) и setTimeout (fun, 4)
setTimeout(function() { console.log('without delay!'); })
setTimeout(function() { console.log('with delay'); }, 1000);
var start = Date.now();
while (Date.now() < start + 3000) {} // block for 3 seconds
console.log('After wait');
в соответствии с вышеприведенной помещения, выход будет:
After wait
with delay
without delay
однако, выход (проверено в хром и светлячок):
After wait
without delay
with delay
(обратите внимание, что при вызове setTimeout(fn,1000)
, fn будет выполняться, как только переводчик будет простаивать через 1 секунду, это может быть 1 секунда, 5 с econds, или даже навсегда, если интерпретатор остается занятым.)
предыдущий пример привел меня сделать вывод, что нет никакой разницы между setTimeout(fn)
, setTimeout(fn,0)
и setTimeout(fn,4)
(4 мс является минимальная задержка в HTML5), так как функция без задержки (два готовы к исполнению)
, так что мой вопрос в том, являются ли они эквивалентными, нет? (в HTML5).
setTimeout (fn) должен быть таким же, как setTimeout (fn, 0), но js НЕ является совпадающим, поэтому лучше всего сказать, что порядок, в котором функции выведены из стека – cox
@cox, я знаю об этом, Я хочу знать разницу между setTimeout (fn, 0) и setTimeout (fn, 4) –