我们可以使用 _destroyed 属性 of Node.js 计时器吗?

Can we use the _destroyed property of Node.js timers?

setTimeout 在 Node.js 中创建的计时器有一个 _destroyed 属性 可以很好地用于诊断(只读)。

E. G。在 REPL 中它是这样工作的:

> let timer = setTimeout(() => console.log('elapsed'), 20000); console.log(timer._destroyed)
false
undefined
> elapsed
> timer._destroyed
true

但它是以下划线开头的 属性。

_destroyed 根本不应该从对象外部使用(因为 API 不稳定等)?或者只要我们避免从外面设置就可以使用它吗?

我建议不要使用它。

正如您所说,在 JS 中以下划线开头的属性是将属性标记为私有的历史方法,并且在没有记录的情况下会被删除或更改行为,因此不能保证它会按预期工作。

另外,._destroyed不是Timeoutclass的a documented property,所以也支持不使用的建议。