У меня есть немного Node.js кода, например:Почему setTimeout срабатывает раньше, чем нужно?
var start = Date.now();
setTimeout(function() {
console.log(Date.now() - start);
for (var i = 0; i < 100000; i++) {
}
}, 1000);
setTimeout(function() {
console.log(Date.now() - start);
}, 2000);
Что-то странное происходит, когда я запускаю его на моей машине. Время, которое я получаю, - это что-то между 970 и 980 годами, и что-то между 1970 и 1980 годами. Почему я получаю время, которое раньше, чем время ожидания?
В каком браузере? Safari возвращает числа, такие как 1002 и 2001, аналогичные в Chrome и Firefox. – RobG
Прежде всего, вы должны удалить этот цикл 'for' - использование таких конструкций в JS никогда не будет хорошей идеей. В JS нет эквивалента функции 'sleep', и попытка создать подобный эффект с использованием таких длинных циклов - это полная бессмыслица, которая почти во всех случаях приведет к непредсказуемым или ненадежным результатам. – CBroe
Я получаю 1002 и 2002 соответственно. –