В JavaScript (узел) функция setTimeout(обратный вызов, время) возвращает как объект, например
Timeout {
_called: false,
_idleTimeout: 10000,
_idlePrev: [TimersList],
_idleNext: [TimersList],
_idleStart: 1540487,
_onTimeout: [Function],
_timerArgs: undefined,
_repeat: null,
_destroyed: false,
domain: [Domain],
[Symbol(unrefed)]: false,
[Symbol(asyncId)]: 1679,
[Symbol(triggerId)]: 5 }
Для правильного расчета времени, прошедшего с момента начала тайм-аута, мне придется записывать временную метку, когда я начинаю тайм-аут. НО есть эта переменная _idleStart, которая предположительно записала время начала.
Печать как Date.now(), так и timeout._idleStart показывает явную разницу (оба запускались одновременно).
> Date.now()
1557468948157
Можете ли вы объяснить разницу между двумя переменными, особенно что такое _idleStart?
извините, это setTimeout. функция, используемая для ожидания определенного количества времени и обратного вызова. w3schools.com/jsref/met_win_settimeout.asp
Для людей, которые могут запутаться, в браузере вы получаете идентификатор, но в узле вы получаете этот объект
обновил вопрос. Спасибо @rajesh
Учитывая, что этот объект не является стандартным, он вполне может измениться в будущих версиях node. Не уверен, что стоит на это полагаться, но тем не менее, setTimeout(()=>{})._idleStart === process.uptime() * 1000



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Date.now() вернет количество миллисекунд, прошедших с 00:00:00 UTC 1 января 1970 года. Однако _idleStart — это количество миллисекунд с момента запуска сеанса Node.js.
Спасибо, вы знаете, где я могу получить доступ к объекту сеанса узла (чтобы узнать время начала). Просто любопытно.
Чтобы узнать количество времени, в течение которого был открыт сеанс узла, используйте global.process.uptime()
_idleStart — это количество миллисекунд с момента запуска сеанса Node, а также статическое значение, создаваемое при вызове setTimeout.
Date.now — эпоха Unix (миллисекунды с 1 января 1970 года).
Итак, если вы хотите рассчитать, когда вы начали сеанс Node, используя setTimeout, вы можете сделать это:
var time = Date.now() - setTimeout(() => {}, 0)._idleStart;
Нет, используйте правильный инструмент
Откуда вы взяли
timeout? Я получаю «ReferenceError: тайм-аут не определен»... Думаю,_idleStart— это не отметка времени на основе Unix, а время, прошедшее с тех пор, как вы начали процесс или открыли страницу.