类窗口

继承关系

  • BaseApi
    • 窗口

构造函数

属性

_isReady: Promise<boolean> = ...
client: any
data?: number | Buffer
logger: Logger
prefix: string = ...
transport: Transport
captureRejectionSymbol: typeof captureRejectionSymbol
captureRejections: boolean

设置或获取所有发射器的默认 captureRejection 值。

defaultMaxListeners: number
errorMonitor: typeof errorMonitor

此符号用于安装仅用于监视 'error' 事件的侦听器。使用此符号安装的侦听器将在调用常规 'error' 侦听器之前被调用。

使用此符号安装侦听器不会更改在发出 'error' 事件后的行为,因此如果未安装常规 'error' 侦听器,进程仍将崩溃。

访问器

方法

  • emitter.on(eventName, listener) 的别名。

    参数

    • eventName: string | symbol
    • listener: ((...args: any[]) => void)
        • (...args): void
        • 参数

          • Rest...args: any[]

          返回 void

    返回 this

    v0.1.26

  • 配置窗口位置。目前这仅用于配置浮动和外部窗口(包括将拆分窗口更改为这些类型)。

    有关参数的含义,请参阅 |nvim_open_win()| 文档。将 'witdh' 和 'height' 设置为 -1 以保持退出大小。

    重新配置浮动窗口时,缺失的选项键不会更改。以下限制适用:rowcolrelative 必须一起重新配置。仅更改这些选项的子集会导致错误。

    参数

    • options: object = {}

    返回 Promise<any>

    options 选项对象

  • 同步调用为名为 eventName 的事件注册的每个侦听器,按照它们注册的顺序,将提供的参数传递给每个侦听器。

    如果事件具有侦听器,则返回 true,否则返回 false

    const EventEmitter = require('events');
    const myEmitter = new EventEmitter();

    // First listener
    myEmitter.on('event', function firstListener() {
    console.log('Helloooo! first listener');
    });
    // Second listener
    myEmitter.on('event', function secondListener(arg1, arg2) {
    console.log(`event with parameters ${arg1}, ${arg2} in second listener`);
    });
    // Third listener
    myEmitter.on('event', function thirdListener(...args) {
    const parameters = args.join(', ');
    console.log(`event with parameters ${parameters} in third listener`);
    });

    console.log(myEmitter.listeners('event'));

    myEmitter.emit('event', 1, 2, 3, 4, 5);

    // Prints:
    // [
    // [Function: firstListener],
    // [Function: secondListener],
    // [Function: thirdListener]
    // ]
    // Helloooo! first listener
    // event with parameters 1, 2 in second listener
    // event with parameters 1, 2, 3, 4, 5 in third listener

    参数

    • eventName: string | symbol
    • Rest...args: any[]

    返回 boolean

    v0.1.26

  • 返回一个数组,列出发射器已为其注册侦听器的事件。数组中的值为字符串或 Symbol

    const EventEmitter = require('events');
    const myEE = new EventEmitter();
    myEE.on('foo', () => {});
    myEE.on('bar', () => {});

    const sym = Symbol('symbol');
    myEE.on(sym, () => {});

    console.log(myEE.eventNames());
    // Prints: [ 'foo', 'bar', Symbol(symbol) ]

    返回 (string | symbol)[]

    v6.0.0

  • 返回 EventEmitter 的当前最大侦听器值,该值要么由 emitter.setMaxListeners(n) 设置,要么默认为 defaultMaxListeners

    返回 number

    v1.0.0

  • 根据 this 的类型检索作用域选项

    参数

    • name: string

    返回 void | Promise<VimValue>

  • 检索作用域变量,具体取决于类型(使用 this.prefix

    参数

    • name: string

    返回 Promise<VimValue>

  • 返回名为 eventName 的事件的监听器数量。

    参数

    • eventName: string | symbol

      正在监听的事件的名称

    返回 number

    v3.2.0

  • 返回名为 eventName 的事件的监听器数组的副本。

    server.on('connection', (stream) => {
    console.log('someone connected!');
    });
    console.log(util.inspect(server.listeners('connection')));
    // Prints: [ [Function] ]

    参数

    • eventName: string | symbol

    返回 Function[]

    v0.1.26

  • request 基本上是一样的,除了您可以选择等待 promise 解决。

    参数

    • name: string
    • args: any[]

    返回 void

  • emitter.removeListener() 的别名。

    参数

    • eventName: string | symbol
    • listener: ((...args: any[]) => void)
        • (...args): void
        • 参数

          • Rest...args: any[]

          返回 void

    返回 this

    v10.0.0

  • listener 函数添加到名为 eventName 的事件的监听器数组的末尾。不会进行检查以查看 listener 是否已添加。多次调用传递相同的 eventNamelistener 组合将导致 listener 被添加和调用多次。

    server.on('connection', (stream) => {
    console.log('someone connected!');
    });

    返回对 EventEmitter 的引用,以便可以链接调用。

    默认情况下,事件监听器按照添加顺序被调用。emitter.prependListener() 方法可用作添加事件监听器到监听器数组开头的替代方法。

    const myEE = new EventEmitter();
    myEE.on('foo', () => console.log('a'));
    myEE.prependListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a

    参数

    • eventName: string | symbol

      事件的名称。

    • listener: ((...args: any[]) => void)

      回调函数

        • (...args): void
        • 参数

          • Rest...args: any[]

          返回 void

    返回 this

    v0.1.101

  • 为名为 eventName 的事件添加一个一次性listener 函数。下次触发 eventName 时,此监听器将被删除,然后调用。

    server.once('connection', (stream) => {
    console.log('Ah, we have our first user!');
    });

    返回对 EventEmitter 的引用,以便可以链接调用。

    默认情况下,事件监听器按照添加顺序被调用。emitter.prependOnceListener() 方法可用作添加事件监听器到监听器数组开头的替代方法。

    const myEE = new EventEmitter();
    myEE.once('foo', () => console.log('a'));
    myEE.prependOnceListener('foo', () => console.log('b'));
    myEE.emit('foo');
    // Prints:
    // b
    // a

    参数

    • eventName: string | symbol

      事件的名称。

    • listener: ((...args: any[]) => void)

      回调函数

        • (...args): void
        • 参数

          • Rest...args: any[]

          返回 void

    返回 this

    v0.3.0

  • listener 函数添加到名为 eventName 的事件的监听器数组的开头。不会进行检查以查看 listener 是否已添加。多次调用传递相同的 eventNamelistener 组合将导致 listener 被添加和调用多次。

    server.prependListener('connection', (stream) => {
    console.log('someone connected!');
    });

    返回对 EventEmitter 的引用,以便可以链接调用。

    参数

    • eventName: string | symbol

      事件的名称。

    • listener: ((...args: any[]) => void)

      回调函数

        • (...args): void
        • 参数

          • Rest...args: any[]

          返回 void

    返回 this

    v6.0.0

  • 将一个一次性listener 函数添加到名为 eventName 的事件的监听器数组的_开头_。下次触发 eventName 时,此监听器将被删除,然后调用。

    server.prependOnceListener('connection', (stream) => {
    console.log('Ah, we have our first user!');
    });

    返回对 EventEmitter 的引用,以便可以链接调用。

    参数

    • eventName: string | symbol

      事件的名称。

    • listener: ((...args: any[]) => void)

      回调函数

        • (...args): void
        • 参数

          • Rest...args: any[]

          返回 void

    返回 this

    v6.0.0

  • 返回名为 eventName 的事件的监听器数组的副本,包括任何包装器(例如由 .once() 创建的包装器)。

    const emitter = new EventEmitter();
    emitter.once('log', () => console.log('log once'));

    // Returns a new Array with a function `onceWrapper` which has a property
    // `listener` which contains the original listener bound above
    const listeners = emitter.rawListeners('log');
    const logFnWrapper = listeners[0];

    // Logs "log once" to the console and does not unbind the `once` event
    logFnWrapper.listener();

    // Logs "log once" to the console and removes the listener
    logFnWrapper();

    emitter.on('log', () => console.log('log persistently'));
    // Will return a new Array with a single function bound by `.on()` above
    const newListeners = emitter.rawListeners('log');

    // Logs "log persistently" twice
    newListeners[0]();
    emitter.emit('log');

    参数

    • eventName: string | symbol

    返回 Function[]

    v9.4.0

  • 删除所有监听器,或指定 eventName 的监听器。

    在代码中的其他地方删除添加的监听器是一种不好的做法,特别是在 EventEmitter 实例是由其他组件或模块创建时(例如套接字或文件流)。

    返回对 EventEmitter 的引用,以便可以链接调用。

    参数

    • 可选event: string | symbol

    返回 this

    v0.1.26

  • 从名为 eventName 的事件的监听器数组中删除指定的 listener

    const callback = (stream) => {
    console.log('someone connected!');
    };
    server.on('connection', callback);
    // ...
    server.removeListener('connection', callback);

    removeListener() 最多将从监听器数组中删除一个监听器实例。如果任何单个监听器已多次添加到指定 eventName 的监听器数组中,则必须多次调用 removeListener() 来删除每个实例。

    一旦事件被发出,在发出时附加到它的所有监听器都会按顺序被调用。这意味着任何在发出之后和最后一个监听器完成执行之前removeListener()removeAllListeners() 调用都不会从正在进行的 emit() 中删除它们。后续事件的行为与预期一样。

    const myEmitter = new MyEmitter();

    const callbackA = () => {
    console.log('A');
    myEmitter.removeListener('event', callbackB);
    };

    const callbackB = () => {
    console.log('B');
    };

    myEmitter.on('event', callbackA);

    myEmitter.on('event', callbackB);

    // callbackA removes listener callbackB but it will still be called.
    // Internal listener array at time of emit [callbackA, callbackB]
    myEmitter.emit('event');
    // Prints:
    // A
    // B

    // callbackB is now removed.
    // Internal listener array [callbackA]
    myEmitter.emit('event');
    // Prints:
    // A

    由于监听器使用内部数组进行管理,因此调用此方法将更改在删除的监听器之后注册的任何监听器的位置索引。这不会影响监听器被调用的顺序,但这意味着由 emitter.listeners() 方法返回的任何监听器数组的副本都需要重新创建。

    当单个函数已多次作为处理程序添加到单个事件中(如以下示例)时,removeListener() 将删除最近添加的实例。在示例中,once('ping') 监听器被删除

    const ee = new EventEmitter();

    function pong() {
    console.log('pong');
    }

    ee.on('ping', pong);
    ee.once('ping', pong);
    ee.removeListener('ping', pong);

    ee.emit('ping');
    ee.emit('ping');

    返回对 EventEmitter 的引用,以便可以链接调用。

    参数

    • eventName: string | symbol
    • listener: ((...args: any[]) => void)
        • (...args): void
        • 参数

          • Rest...args: any[]

          返回 void

    返回 this

    v0.1.26

  • 默认情况下,EventEmitter会在为特定事件添加超过10个监听器时打印警告。这是一个有用的默认设置,可以帮助查找内存泄漏。emitter.setMaxListeners()方法允许修改此特定EventEmitter实例的限制。该值可以设置为Infinity(或0)以表示监听器数量不受限制。

    返回对 EventEmitter 的引用,以便可以链接调用。

    参数

    • n: number

    返回 this

    v0.3.5

  • 设置作用域选项

    参数

    • name: string
    • value: VimValue

    返回 void | Promise<void>

  • 设置作用域变量

    参数

    • name: string
    • value: VimValue

    返回 Promise<void>

  • 返回名为 eventName 的事件的监听器数组的副本。

    对于EventEmitter,这与在发射器上调用.listeners的行为完全相同。

    对于EventTarget,这是获取事件目标事件监听器的唯一方法。这对于调试和诊断目的很有用。

    const { getEventListeners, EventEmitter } = require('events');

    {
    const ee = new EventEmitter();
    const listener = () => console.log('Events are fun');
    ee.on('foo', listener);
    getEventListeners(ee, 'foo'); // [listener]
    }
    {
    const et = new EventTarget();
    const listener = () => console.log('Events are fun');
    et.addEventListener('foo', listener);
    getEventListeners(et, 'foo'); // [listener]
    }

    参数

    • emitter: EventEmitter | DOMEventTarget
    • name: string | symbol

    返回 Function[]

    v15.2.0

  • 一个类方法,返回给定emitter上注册的给定eventName的监听器数量。

    const { EventEmitter, listenerCount } = require('events');
    const myEmitter = new EventEmitter();
    myEmitter.on('event', () => {});
    myEmitter.on('event', () => {});
    console.log(listenerCount(myEmitter, 'event'));
    // Prints: 2

    参数

    • emitter: EventEmitter

      要查询的发射器

    • eventName: string | symbol

      事件名称

    返回 number

    v0.9.12

    自 v3.2.0 起 - 使用 listenerCount 代替。

  • const { on, EventEmitter } = require('events');

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo')) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    返回一个AsyncIterator,它迭代eventName事件。如果EventEmitter发出'error',它将抛出异常。它在退出循环时会删除所有监听器。每次迭代返回的value是一个数组,其中包含发出的事件参数。

    可以使用AbortSignal取消等待事件

    const { on, EventEmitter } = require('events');
    const ac = new AbortController();

    (async () => {
    const ee = new EventEmitter();

    // Emit later on
    process.nextTick(() => {
    ee.emit('foo', 'bar');
    ee.emit('foo', 42);
    });

    for await (const event of on(ee, 'foo', { signal: ac.signal })) {
    // The execution of this inner block is synchronous and it
    // processes one event at a time (even with await). Do not use
    // if concurrent execution is required.
    console.log(event); // prints ['bar'] [42]
    }
    // Unreachable here
    })();

    process.nextTick(() => ac.abort());

    参数

    • emitter: EventEmitter
    • eventName: string

      正在监听的事件的名称

    • Optionaloptions: StaticEventEmitterOptions

    返回 AsyncIterableIterator<any>

    它迭代emitter发出的eventName事件

    v13.6.0, v12.16.0

  • 创建一个Promise,当EventEmitter发出给定事件时,该Promise将被履行,或者如果EventEmitter在等待时发出'error',则该Promise将被拒绝。该Promise将使用传递给给定事件的所有参数的数组解析。

    此方法在设计上是通用的,并且适用于 Web 平台 EventTarget 接口,该接口没有特殊的'error' 事件语义,也不监听'error' 事件。

    const { once, EventEmitter } = require('events');

    async function run() {
    const ee = new EventEmitter();

    process.nextTick(() => {
    ee.emit('myevent', 42);
    });

    const [value] = await once(ee, 'myevent');
    console.log(value);

    const err = new Error('kaboom');
    process.nextTick(() => {
    ee.emit('error', err);
    });

    try {
    await once(ee, 'myevent');
    } catch (err) {
    console.log('error happened', err);
    }
    }

    run();

    'error' 事件的特殊处理仅在使用events.once()等待另一个事件时使用。如果使用events.once()等待'error' 事件本身,则它将像任何其他类型的事件一样对待,没有特殊处理

    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();

    once(ee, 'error')
    .then(([err]) => console.log('ok', err.message))
    .catch((err) => console.log('error', err.message));

    ee.emit('error', new Error('boom'));

    // Prints: ok boom

    可以使用AbortSignal取消等待事件

    const { EventEmitter, once } = require('events');

    const ee = new EventEmitter();
    const ac = new AbortController();

    async function foo(emitter, event, signal) {
    try {
    await once(emitter, event, { signal });
    console.log('event emitted!');
    } catch (error) {
    if (error.name === 'AbortError') {
    console.error('Waiting for the event was canceled!');
    } else {
    console.error('There was an error', error.message);
    }
    }
    }

    foo(ee, 'foo', ac.signal);
    ac.abort(); // Abort waiting for the event
    ee.emit('foo'); // Prints: Waiting for the event was canceled!

    参数

    • emitter: NodeEventTarget
    • eventName: string | symbol
    • Optionaloptions: StaticEventEmitterOptions

    返回 Promise<any[]>

    v11.13.0, v10.16.0

  • 参数

    • emitter: DOMEventTarget
    • eventName: string
    • Optionaloptions: StaticEventEmitterOptions

    返回 Promise<any[]>