オブジェクト組み込みオブジェクト

オブジェクトワーカー

Worker オブジェクトは、子スレッドを作成するために使用されるオブジェクトであり、プログラム内で作成および処理できます。Worker オブジェクトは、メイン スレッドとは異なるスレッドで実行される JavaScript プロセスとして理解できます。ワーカーはメインスレッドとメモリを共有せず、メインスレッドをブロックしない、主流の非同期プログラミング手法です。

Worker オブジェクトのコンストラクターは次のとおりです。

1
new Worker(String path, Object opts = {})

で、pathこのパラメータは、新しいスレッドの JavaScript ファイル パスを指定します。たとえば、次の内容を含む work.js ファイルを作成できます。

1 2 3 4
const { Worker } = require('worker_threads'); console.log('Hi from worker');

メイン プログラムで、次のコードを使用して work.js を実行します。

1 2 3 4
const { Worker } = require('worker_threads'); const worker = new Worker('path/to/work.js');

実行後、メイン プログラムのコンソールに「Hi from worker」という出力が表示されます。

次の例では、長時間実行される計算があり、それを別のスレッドに入れて、メイン スレッドでの計算によってブロックされずに処理したいとします。コードは以下のように表示されます:

メインスレッド:

1 2 3 4 5 6 7 8 9 10 11 12
const { Worker } = require('worker_threads'); // create a worker thread const fib = new Worker(__dirname + '/fib-worker.js'); // receive the result from the worker thread fib.onmessage = (ev) => { console.log('result: ', ev.data); }; fib.postMessage(40); console.log('main thread still working');

この例では、ワーカー オブジェクトのコンストラクターを通じてフィボナッチ数列の計算を処理するワーカー スレッドを作成し、メイン スレッドは postMessage() メソッドを通じてワーカー スレッドにデータを渡し、onmessage イベントを通じて処理結果を取得します。 。同時に、メイン スレッドは、このコンピューティング タスクがワーカー スレッドに「委任」され、他の処理を続行できることを証明するために、「まだ作業中」というメッセージを表示します。

ワーカー スレッドのコード スタイルは次のとおりです。

1 2 3 4 5 6 7 8 9 10 11 12
// fib-worker.js Master.onmessage = (ev) => { const n = ev.data; const result = fib(n); // Once the calculation has been completed, the result is sent back to the main thread. Master.postMessage(result); }; function fib(n) { if (n <= 1) return n; return fib(n - 1) + fib(n - 2); }

ワーカー スレッドでは、エントリ パラメーター postMessage() を通じてメイン スレッドから送信されたメッセージをリッスンし、指定されたフィボナッチ数列を計算し、Master.postMessage() メソッドを通じて計算結果をメイン スレッドに送り返しました。

これは最も基本的な Worker の例です。Worker オブジェクトを使用して開発する場合、メイン スレッドとワーカー スレッドは完全に非同期です。各 Worker オブジェクトは別個のスレッドです。メイン スレッドでインスタンス化された Worker オブジェクトはブロックを生成しません。

相続関係

コンストラクタ

Worker

ワーカーオブジェクトコンストラクター

1 2
new Worker(String path, Object opts = {});

呼び出しパラメータ:

  • path: 文字列。ワーカーエントリスクリプトを指定します。絶対パスのみを受け入れます。
  • opts: オブジェクト、構築オプション、まだサポートされていません

静的プロパティ

defaultMaxListeners

整数、デフォルトのグローバル最大リスナー数

1
static Integer Worker.defaultMaxListeners;

メンバーのプロパティ

onload

関数、クエリ、およびバインディングは、on("load", func); と同等のロード メッセージ イベントを受け入れます。

1
Function Worker.onload;

onmessage

関数、クエリ、バインディングは、on("message", func) と同等の postMessage メッセージ イベントを受け入れます。

1
Function Worker.onmessage;

onerror

関数、クエリ、バインディングは、on("error", func); と同等のエラー メッセージ イベントを受け入れます。

1
Function Worker.onerror;

メンバー関数

postMessage

マスターまたはワーカーにメッセージを送信し、

1
Worker.postMessage(Value data);

呼び出しパラメータ:

  • data: 値、送信されるメッセージの内容を指定します

on

イベントハンドラーをオブジェクトにバインドする

1 2
Object Worker.on(String ev, Function func);

呼び出しパラメータ:

  • ev: 文字列、イベントの名前を指定します
  • func: 関数、イベント処理関数を指定します

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

イベントハンドラーをオブジェクトにバインドする

1
Object Worker.on(Object map);

呼び出しパラメータ:

  • map: オブジェクト。イベント マッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

addListener

イベントハンドラーをオブジェクトにバインドする

1 2
Object Worker.addListener(String ev, Function func);

呼び出しパラメータ:

  • ev: 文字列、イベントの名前を指定します
  • func: 関数、イベント処理関数を指定します

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

イベントハンドラーをオブジェクトにバインドする

1
Object Worker.addListener(Object map);

呼び出しパラメータ:

  • map: オブジェクト。イベント マッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

prependListener

イベントハンドラーをオブジェクトのオリジンにバインドする

1 2
Object Worker.prependListener(String ev, Function func);

呼び出しパラメータ:

  • ev: 文字列、イベントの名前を指定します
  • func: 関数、イベント処理関数を指定します

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

イベントハンドラーをオブジェクトのオリジンにバインドする

1
Object Worker.prependListener(Object map);

呼び出しパラメータ:

  • map: オブジェクト。イベント マッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

once

ワンタイム イベント ハンドラーをオブジェクトにバインドします。ワンタイム ハンドラーは 1 回だけトリガーされます。

1 2
Object Worker.once(String ev, Function func);

呼び出しパラメータ:

  • ev: 文字列、イベントの名前を指定します
  • func: 関数、イベント処理関数を指定します

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

ワンタイム イベント ハンドラーをオブジェクトにバインドします。ワンタイム ハンドラーは 1 回だけトリガーされます。

1
Object Worker.once(Object map);

呼び出しパラメータ:

  • map: オブジェクト。イベント マッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

prependOnceListener

イベントハンドラーをオブジェクトのオリジンにバインドする

1 2
Object Worker.prependOnceListener(String ev, Function func);

呼び出しパラメータ:

  • ev: 文字列、イベントの名前を指定します
  • func: 関数、イベント処理関数を指定します

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

イベントハンドラーをオブジェクトのオリジンにバインドする

1
Object Worker.prependOnceListener(Object map);

呼び出しパラメータ:

  • map: オブジェクト。イベント マッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

off

オブジェクト処理キューから関数の割り当てを解除する

1 2
Object Worker.off(String ev, Function func);

呼び出しパラメータ:

  • ev: 文字列、イベントの名前を指定します
  • func: 関数、イベント処理関数を指定します

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

オブジェクト処理キュー内のすべての関数をキャンセルします

1
Object Worker.off(String ev);

呼び出しパラメータ:

  • ev: 文字列、イベントの名前を指定します

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

オブジェクト処理キューから関数の割り当てを解除する

1
Object Worker.off(Object map);

呼び出しパラメータ:

  • map: オブジェクト。イベントのマッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

removeListener

オブジェクト処理キューから関数の割り当てを解除する

1 2
Object Worker.removeListener(String ev, Function func);

呼び出しパラメータ:

  • ev: 文字列、イベントの名前を指定します
  • func: 関数、イベント処理関数を指定します

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

オブジェクト処理キュー内のすべての関数をキャンセルします

1
Object Worker.removeListener(String ev);

呼び出しパラメータ:

  • ev: 文字列、イベントの名前を指定します

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

オブジェクト処理キューから関数の割り当てを解除する

1
Object Worker.removeListener(Object map);

呼び出しパラメータ:

  • map: オブジェクト。イベントのマッピング関係を指定します。オブジェクトの属性名はイベント名として使用され、属性の値はイベント処理関数として使用されます。

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

removeAllListeners

オブジェクトの処理キューからすべてのイベントのすべてのリスナーをキャンセルします。イベントが指定されている場合は、指定されたイベントのすべてのリスナーが削除されます。

1
Object Worker.removeAllListeners(String ev);

呼び出しパラメータ:

  • ev: 文字列、イベントの名前を指定します

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

オブジェクトの処理キューからすべてのイベントのすべてのリスナーをキャンセルします。イベントが指定されている場合は、指定されたイベントのすべてのリスナーが削除されます。

1
Object Worker.removeAllListeners(Array evs = []);

呼び出しパラメータ:

  • evs: 配列、イベントの名前を指定します

返される結果:

  • Object、チェーン呼び出しを容易にするためにイベント オブジェクト自体を返します。

setMaxListeners

リスナー数のデフォルト制限 (互換性のみを目的)

1
Worker.setMaxListeners(Integer n);

呼び出しパラメータ:

  • n: 整数、イベントの数を指定します

getMaxListeners

互換性のみを目的として、デフォルトのリスナー制限数を取得します。

1
Integer Worker.getMaxListeners();

返される結果:

  • Integer、デフォルトの制限数量を返します

listeners

オブジェクトの指定されたイベントについてリスナー配列をクエリします。

1
Array Worker.listeners(String ev);

呼び出しパラメータ:

  • ev: 文字列、イベントの名前を指定します

返される結果:

  • Array、指定されたイベントのリスナー配列を返します。

listenerCount

オブジェクトの指定されたイベントのリスナーの数をクエリします。

1
Integer Worker.listenerCount(String ev);

呼び出しパラメータ:

  • ev: 文字列、イベントの名前を指定します

返される結果:

  • Integer、指定されたイベントのリスナーの数を返します。

オブジェクトの指定されたイベントのリスナーの数をクエリします。

1 2
Integer Worker.listenerCount(Value o, String ev);

呼び出しパラメータ:

  • o: 値。クエリのオブジェクトを指定します。
  • ev: 文字列、イベントの名前を指定します

返される結果:

  • Integer、指定されたイベントのリスナーの数を返します。

eventNames

クエリリスナーイベント名

1
Array Worker.eventNames();

返される結果:

  • Array、イベント名の配列を返します。

emit

イベントをアクティブにトリガーする

1 2
Boolean Worker.emit(String ev, ...args);

呼び出しパラメータ:

  • ev: 文字列、イベント名
  • args: ...、イベントパラメータはイベント処理関数に渡されます

返される結果:

  • Boolean、イベント トリガーのステータスを返し、応答イベントがある場合は true を返し、それ以外の場合は false を返します。

toString

オブジェクトの文字列表現を返します。通常、「[Native Object]」が返されます。オブジェクトは、独自の特性に従って再実装できます。

1
String Worker.toString();

返される結果:

  • String、オブジェクトの文字列表現を返します。

toJSON

オブジェクトの JSON 形式表現を返します。通常は、オブジェクトによって定義された読み取り可能なプロパティのコレクションを返します。

1
Value Worker.toJSON(String key = "");

呼び出しパラメータ:

  • key: 文字列、使用されません

返される結果:

  • Value、シリアル化可能な JSON を含む値を返します