NodeJS setTimeout 中的计时器签名
timer signature in setTimeout in NodeJS
获取 Nodejs 计时器签名的正确方法是什么?
浏览器 returns 整数,但 NodeJS returns 内部对象似乎没有 属性 或带有可解析字符串或数字的方法。有什么办法可以得到这个吗?
给定以下代码:
var x = setTimeout(()=>{},1);
console.log(x);
在 NodeJS 中 returns:
Timeout {
_called: false,
_idleTimeout: 1,
_idlePrev: [TimersList],
_idleNext: [TimersList],
_idleStart: 2275,
_onTimeout: [Function],
_timerArgs: undefined,
_repeat: null,
_destroyed: false,
domain: [Domain],
[Symbol(unrefed)]: false,
[Symbol(asyncId)]: 73,
[Symbol(triggerId)]: 5 }
而浏览器 returns(几乎是随机的)整数,例如 3
再问好@blagus,
您的答案实际上存在于文档中。在这里你可以看到 nodejs 文档中的 referance 调用 Symbol.toPrimitive
;
const timer = setTimeout(() => {}, 100);
const timerID = timer[Symbol.toPrimitive]();
clearTimeout(timerID); // you can use this directly on clearTimeout to clear or
// clearTimeout(timer); // just use timer itself =)
console.log(timer[Symbol.toPrimitive]()); // give's you a serializable id which is a number bdw :)
console.log(timer);
试试这个解决方案:
let timerId: ReturnType<typeof setTimeout>
详情:
在浏览器中,计时器标识符是一个数字。在其他环境中,这可能是别的东西。例如,Node.js returns 带有附加方法的计时器对象。
ref: setInterval 部分
之前的最后一段
获取 Nodejs 计时器签名的正确方法是什么?
浏览器 returns 整数,但 NodeJS returns 内部对象似乎没有 属性 或带有可解析字符串或数字的方法。有什么办法可以得到这个吗?
给定以下代码:
var x = setTimeout(()=>{},1);
console.log(x);
在 NodeJS 中 returns:
Timeout {
_called: false,
_idleTimeout: 1,
_idlePrev: [TimersList],
_idleNext: [TimersList],
_idleStart: 2275,
_onTimeout: [Function],
_timerArgs: undefined,
_repeat: null,
_destroyed: false,
domain: [Domain],
[Symbol(unrefed)]: false,
[Symbol(asyncId)]: 73,
[Symbol(triggerId)]: 5 }
而浏览器 returns(几乎是随机的)整数,例如 3
再问好@blagus,
您的答案实际上存在于文档中。在这里你可以看到 nodejs 文档中的 referance 调用 Symbol.toPrimitive
;
const timer = setTimeout(() => {}, 100);
const timerID = timer[Symbol.toPrimitive]();
clearTimeout(timerID); // you can use this directly on clearTimeout to clear or
// clearTimeout(timer); // just use timer itself =)
console.log(timer[Symbol.toPrimitive]()); // give's you a serializable id which is a number bdw :)
console.log(timer);
试试这个解决方案:
let timerId: ReturnType<typeof setTimeout>
详情: 在浏览器中,计时器标识符是一个数字。在其他环境中,这可能是别的东西。例如,Node.js returns 带有附加方法的计时器对象。
ref: setInterval 部分
之前的最后一段