Protected
_isProtected
clientOptional
dataProtected
transportStatic
Readonly
captureStatic
captureStatic
defaultStatic
Readonly
errorこのシンボルは、'error'
イベントのみを監視するためのリスナーをインストールするために使用されます。このシンボルを使用してインストールされたリスナーは、通常の'error'
リスナーが呼び出される前に呼び出されます。
このシンボルを使用してリスナーをインストールしても、'error'
イベントが発行された後の動作は変更されないため、通常の'error'
リスナーがインストールされていない場合、プロセスはクラッシュします。
バッファの変更ティックを取得します
バッファの bufnr を取得します
バッファ内の行の総数
バッファ内の行を取得します
バッファが有効でロードされているかを確認します。ロードされていないバッファの詳細については、|api-buffer| を参照してください。
バッファ名を取得します
現在のバッファ名を設定します
現在のバッファが有効かどうか
バッファにハイライトを追加します。
セマンティックハイライターやリンターのように、バッファに動的にハイライトを生成するプラグインに役立ちます。この関数は、バッファに単一のハイライトを追加します。|matchaddpos()|とは異なり、ハイライトは、(ハイライトされた行の上に線が挿入/削除されると)行番号の変更に従い、サインやマークと同じように動作します。
名前空間は、一連のハイライトの一括削除/更新に使用されます。名前空間を作成するには、名前空間IDを返す|nvim_create_namespace|を使用します。この関数のns_id
として渡して、名前空間にハイライトを追加します。同じ名前空間内のすべてのハイライトは、|nvim_buf_clear_namespace|への単一の呼び出しでクリアできます。ハイライトがAPI呼び出しによって削除されない場合は、ns_id = -1
を渡します。
簡略化のために、ns_id = 0
を使用してハイライトの新しい名前空間を作成できます。割り当てられたIDが返されます。hl_group
が空の文字列の場合、ハイライトは追加されませんが、新しいns_id
が返されます。これは後方互換性のためにサポートされています。新しいコードでは、|nvim_create_namespace|を使用して新しい空の名前空間を作成する必要があります。
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
Rest
...args: any[]エミッターがリスナーを登録しているイベントをリストアップした配列を返します。配列の値は文字列または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) ]
EventEmitter
の現在の最大リスナー数を返します。これは、emitter.setMaxListeners(n)
によって設定されるか、デフォルトではdefaultMaxListenersになります。
行のバイトオフセットを返します。
1行目(index=0)のオフセットは0です。UTF-8バイト数がカウントされます。EOLは1バイトです。「fileformat」と「fileencoding」は無視されます。最終行のすぐ後の行インデックスは、バッファーの合計バイト数を表します。最後にEOLバイトが書き込まれる場合は、それもカウントされます(「eol」を参照)。
|line2byte()| とは異なり、範囲外のインデックスに対してはエラーをスローします。アンロードされたバッファーの場合は-1を返します。
整数のバイトオフセット。アンロードされたバッファーの場合は-1。
listener
関数を、eventName
という名前のイベントに対するリスナー配列の末尾に追加します。listener
がすでに登録されているかどうかのチェックは行われません。同じ eventName
と listener
の組み合わせを渡して複数回呼び出すと、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
イベントの名前。
コールバック関数
Rest
...args: any[]eventName
という名前のイベントに対して、1回限りの 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
イベントの名前。
コールバック関数
Rest
...args: any[]listener
関数を、eventName
という名前のイベントに対するリスナー配列の先頭に追加します。listener
がすでに登録されているかどうかのチェックは行われません。同じ eventName
と listener
の組み合わせを渡して複数回呼び出すと、listener
は複数回追加され、複数回呼び出されます。
server.prependListener('connection', (stream) => {
console.log('someone connected!');
});
EventEmitter
への参照を返すため、呼び出しをチェーンできます。
イベントの名前。
コールバック関数
Rest
...args: any[]eventName
という名前のイベントに対して、リスナー配列の_先頭_に、1回限りの listener
関数を追加します。次回 eventName
がトリガーされると、このリスナーは削除されてから呼び出されます。
server.prependOnceListener('connection', (stream) => {
console.log('Ah, we have our first user!');
});
EventEmitter
への参照を返すため、呼び出しをチェーンできます。
イベントの名前。
コールバック関数
Rest
...args: any[]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
という名前のイベントのリスナー配列から、指定された listener
を削除します。
const callback = (stream) => {
console.log('someone connected!');
};
server.on('connection', callback);
// ...
server.removeListener('connection', callback);
removeListener()
は、リスナー配列から最大で 1 つのリスナーインスタンスを削除します。特定の 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
への参照を返すため、呼び出しをチェーンできます。
Rest
...args: any[]デフォルトでは、EventEmitter
は、特定のイベントに対して 10
を超えるリスナーが追加された場合、警告を表示します。これは、メモリリークを見つけるのに役立つ便利なデフォルトです。emitter.setMaxListeners()
メソッドを使用すると、この特定の EventEmitter
インスタンスに対して制限を変更できます。値は、無制限のリスナー数を示すために Infinity
(または 0
) に設定できます。
EventEmitter
への参照を返すため、呼び出しをチェーンできます。
バッファー行の仮想テキスト(注釈)を設定します。
デフォルトでは(そして現在の唯一のオプション)、テキストはバッファテキストの後ろに配置されます。仮想テキストは決してリフローを引き起こさず、むしろ仮想テキストは画面行の末尾で切り捨てられます。仮想テキストは、通常のテキストの後の 1 つのセル(|lcs-eol| またはスペース)から開始されます。
名前空間は、仮想テキストの一括削除/更新をサポートするために使用されます。名前空間を作成するには、|nvim_create_namespace| を使用します。仮想テキストは、|nvim_buf_clear_namespace| を使用してクリアされます。同じ ns_id
を |nvim_buf_add_highlight| によって追加された仮想テキストとハイライトの両方に使用できます。どちらも |nvim_buf_clear_namespace| への 1 回の呼び出しでクリアできます。仮想テキストが API 呼び出しによってクリアされない場合は、ns_id = -1
を渡します。
簡略化のために、ns_id = 0
を使用して仮想テキストの新しい名前空間を作成できます。割り当てられた id が返されます。
使用する名前空間、または名前空間を作成する場合は 0、グループ化されていない注釈の場合は -1
仮想テキストで注釈を付ける行(0 から始まるインデックス)
各々が指定されたハイライトを持つテキストチャンクを表す [text, hl_group] 配列のリスト。hl_group
要素は、ハイライトがない場合は省略できます。
オプションのパラメーター。現在使用されていません。
Static
geteventName
という名前のイベントに対するリスナーの配列のコピーを返します。
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]
}
Static
listener与えられたemitter
に登録されている、与えられたeventName
のリスナー数を返すクラスメソッドです。
const { EventEmitter, listenerCount } = require('events');
const myEmitter = new EventEmitter();
myEmitter.on('event', () => {});
myEmitter.on('event', () => {});
console.log(listenerCount(myEmitter, 'event'));
// Prints: 2
問い合わせるエミッター
イベント名
Static
onconst { 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
})();
eventName
イベントをイテレートするAsyncIterator
を返します。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());
リッスンしているイベントの名前
Optional
options: StaticEventEmitterOptionsemitter
によって発行されたeventName
イベントをイテレートするAsyncIterableIterator<any>を返します。emitter
によって発行されたeventName
イベントをイテレートする
Static
onceEventEmitter
が指定されたイベントを発行したときにfulfilledとなるPromise
を作成します。または、待機中にEventEmitter
が'error'
を発行した場合はrejectedとなります。Promise
は、指定されたイベントに発行されたすべての引数の配列で解決されます。
このメソッドは意図的にジェネリックであり、特別な'error'
イベントセマンティクスを持たず、'error'
イベントをリッスンしないWebプラットフォームのEventTargetインターフェースで機能します。
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!
Optional
options: StaticEventEmitterOptionsOptional
options: StaticEventEmitterOptions
すべてのエミッターのデフォルトの captureRejection 値を設定または取得します。