这些对象在所有模块中都可用。 以下变量可能看起来是全局的,但实际上不是。 它们只存在于模块的作用域中,参见模块系统文档:
此处列出的对象特定于 Node.js。 有些内置对象是 JavaScript 语言本身的一部分,它们也可以全局地访问。
AbortController
类#用于在选定的基于 Promise
的 API 中发出取消信号的实用工具类。
该 API 基于 Web API AbortController
。
const ac = new AbortController();
ac.signal.addEventListener('abort', () => console.log('Aborted!'),
{ once: true });
ac.abort();
console.log(ac.signal.aborted); // 打印 true
abortController.abort([reason])
#reason
<any> 可选的原因,可在 AbortSignal
的 reason
属性中检索。触发中止信号,使 abortController.signal
触发 'abort'
事件。
abortController.signal
#AbortSignal
类#AbortSignal
用于在调用 abortController.abort()
方法时通知观察者。
AbortSignal.abort([reason])
#reason
: <any>返回新的已中止的 AbortSignal
。
AbortSignal.timeout(delay)
#delay
<number> 触发 AbortSignal 之前等待的毫秒数。返回新的 AbortSignal
,其将在 delay
毫秒内中止。
'abort'
事件#当调用 abortController.abort()
方法时,则触发 'abort'
事件。
使用单个对象参数调用回调,该对象具有被设置为 'abort'
的 type
属性:
const ac = new AbortController();
// 使用 onabort 属性...
ac.signal.onabort = () => console.log('aborted!');
// 或者 EventTarget API ...
ac.signal.addEventListener('abort', (event) => {
console.log(event.type); // 打印 'abort'
}, { once: true });
ac.abort();
与 AbortSignal
关联的 AbortController
只会触发一次 'abort'
事件。
建议在添加 'abort'
事件监听器之前代码检查 abortSignal.aborted
属性是否为 false
。
任何绑定到 AbortSignal
的事件监听器都应使用 { once: true }
选项(或者,如果使用 EventEmitter
API 绑定监听器,则使用 once()
方法)以确保在处理 'abort'
事件后立即删除事件监听器。
不这样做可能会导致内存泄漏。
abortSignal.aborted
#AbortController
后为真。abortSignal.onabort
#可选的回调函数,可以由用户代码设置,以便当调用 abortController.abort()
函数时得到通知。
abortSignal.reason
#当触发 AbortSignal
时指定的可选的原因。
const ac = new AbortController();
ac.abort(new Error('boom!'));
console.log(ac.signal.reason); // Error('boom!');
Buffer
类#用于处理二进制数据。 参阅缓冲区章节。
__dirname
#此变量可能看起来是全局的,但实际上不是。
参见 __dirname
。
__filename
#此变量可能看起来是全局的,但实际上不是。
参见 __filename
。
atob(data)
#Buffer.from(data, 'base64')
。buffer.atob()
的全局别名。
btoa(data)
#buf.toString('base64')
。buffer.btoa()
的全局别名。
clearImmediate(immediateObject)
#clearImmediate
在定时器章节进行了描述。
clearInterval(intervalObject)
#clearInterval
在定时器章节进行了描述。
clearTimeout(timeoutObject)
#clearTimeout
在定时器章节进行了描述。
console
#用于打印到标准输出和标准错误。
参阅 console
章节。
Event
#Event
类的浏览器兼容的实现。
有关更多详细信息,请参阅 EventTarget
和 Event
API。
EventTarget
#EventTarget
类的浏览器兼容的实现。
有关更多详细信息,请参阅 EventTarget
和 Event
API。
exports
#此变量可能看起来是全局的,但实际上不是。
参见 exports
。
global
#在浏览器中,顶层的作用域是全局作用域。
这意味着在浏览器中,var something
将定义新的全局变量。
在 Node.js 中这是不同的。
顶层作用域不是全局作用域;Node.js 模块内的 var something
将是该模块本地的。
MessageChannel
#MessageChannel
类。
有关详细信息,请参阅 MessageChannel
。
MessageEvent
#MessageEvent
类。
有关详细信息,请参阅 MessageEvent
。
MessagePort
#MessagePort
类。
有关详细信息,请参阅 MessagePort
。
module
#此变量可能看起来是全局的,但实际上不是。
参见 module
。
performance
#process
#进程对象。
参阅 process
对象章节。
queueMicrotask(callback)
#callback
<Function> 要排队的函数。queueMicrotask()
方法将微任务排队以调用 callback
。
如果 callback
抛出异常,则将触发 process
对象的 'uncaughtException'
事件。
微任务队列由 V8 管理,并且可以以类似于 process.nextTick()
队列的方式使用,后者由 Node.js 管理。
在 Node.js 事件循环的每次轮询中,process.nextTick()
队列总是在微任务队列之前处理。
// 在这里,`queueMicrotask()` 用于确保 'load' 事件总是异步地触发,
// 并且因此始终如一。
// 在这里使用 `process.nextTick()` 会导致 'load' 事件
// 总是在任何其他 promise 作业之前触发。
DataHandler.prototype.load = async function load(key) {
const hit = this._cache.get(key);
if (hit !== undefined) {
queueMicrotask(() => {
this.emit('load', hit);
});
return;
}
const data = await fetchData(key);
this._cache.set(key, data);
this.emit('load', data);
};
require()
#此变量可能看起来是全局的,但实际上不是。
参见 require()
。
setImmediate(callback[, ...args])
#setImmediate
在定时器章节进行了描述。
setInterval(callback, delay[, ...args])
#setInterval
在定时器章节进行了描述。
setTimeout(callback, delay[, ...args])
#setTimeout
在定时器章节进行了描述。
TextDecoder
#WHATWG TextDecoder
类。
参阅 TextDecoder
章节。
TextEncoder
#WHATWG TextEncoder
类。
参阅 TextEncoder
章节。
URL
#WHATWG URL
类。
参阅 URL
章节。
URLSearchParams
#WHATWG URLSearchParams
类。
参阅 URLSearchParams
章节。
WebAssembly
#该对象充当所有 W3C WebAssembly 相关功能的命名空间。 有关用法和兼容性,请参阅 Mozilla 开发者网络。