setTimeout _idleStart отличается от Date.now ()? - PullRequest
0 голосов
/ 10 мая 2019

В 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?

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

_idleStart - это количество миллисекунд, прошедшее с начала сеанса узла, и это статическое значение, создаваемое при вызове setTimeout.

Date.now - это эпоха Unix (миллисекунды с 1 января 1970 года).

Итак, если вы хотите рассчитать, когда вы начинаете сеанс Node с использованием setTimeout, вы можете сделать это:

var time = Date.now() - setTimeout(() => {}, 0)._idleStart;
0 голосов
/ 10 мая 2019

Date.now() вернет количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 UTC. Однако _idleStart - это количество миллисекунд с момента запуска сеанса Node.js.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...