考虑以下代码:

let id = setInterval(function f() {console.log("Nice.");}, 1000);
console.log(id);
JSON.stringify(id);


这以最后一行TypeError: Converting circular structure to JSON的错误结束。

console.log(id)给出

Timeout {
  _called: false,
  _idleTimeout: 1000,
  _idlePrev:
   TimersList {
     _idleNext: [Circular],
     _idlePrev: [Circular],
     _timer: Timer { '0': [Function: listOnTimeout], _list: [Circular] },
     _unrefed: false,
     msecs: 1000,
     nextTick: false },
  _idleNext:
   TimersList {
     _idleNext: [Circular],
     _idlePrev: [Circular],
     _timer: Timer { '0': [Function: listOnTimeout], _list: [Circular] },
     _unrefed: false,
     msecs: 1000,
     nextTick: false },
  _idleStart: 81,
  _onTimeout: [Function: f],
  _timerArgs: undefined,
  _repeat: 1000,
  _destroyed: false,
  [Symbol(asyncId)]: 6,
  [Symbol(triggerAsyncId)]: 1 }


为什么超时对象包含循环引用?

最佳答案

请注意,node.js中的setInterval与javascript中的setInterval行为不同。虽然javascript版本返回整数,但node.js returns a Timeout object.并不用于序列化。

关于javascript - 为什么setInterval()给出循环引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51526315/

10-16 19:50