객체 내장 객체

ObjectWorker

Worker 객체는 프로그램 내에서 생성되고 처리될 수 있는 자식 스레드를 생성하는 데 사용되는 객체입니다. Worker 객체는 기본 스레드와 다른 스레드에서 실행되는 JavaScript 프로세스로 이해될 수 있습니다. Worker는 메인 스레드와 메모리를 공유하지 않고 메인 스레드를 차단하지 않는 주류 비동기 프로그래밍 방식입니다.

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');

이번 예제에서는 피보나치 수열 계산을 처리하기 위해 Worker 객체의 생성자를 통해 워커 스레드를 생성하고, 메인 스레드는 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, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.

결과 반환:

  • Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.

addListener

이벤트 핸들러를 객체에 바인딩

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

호출 매개변수:

  • ev: 문자열, 이벤트 이름을 지정합니다.
  • func: 함수, 이벤트 처리 함수를 지정합니다.

결과 반환:

  • Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.

이벤트 핸들러를 객체에 바인딩

1
Object Worker.addListener(Object map);

호출 매개변수:

  • map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.

결과 반환:

  • Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.

prependListener

이벤트 핸들러를 객체의 원점에 바인딩

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

호출 매개변수:

  • ev: 문자열, 이벤트 이름을 지정합니다.
  • func: 함수, 이벤트 처리 함수를 지정합니다.

결과 반환:

  • Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.

이벤트 핸들러를 객체의 원점에 바인딩

1
Object Worker.prependListener(Object map);

호출 매개변수:

  • map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.

결과 반환:

  • Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.

once

일회성 이벤트 핸들러를 객체에 바인딩합니다. 일회성 핸들러는 한 번만 트리거됩니다.

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

호출 매개변수:

  • ev: 문자열, 이벤트 이름을 지정합니다.
  • func: 함수, 이벤트 처리 함수를 지정합니다.

결과 반환:

  • Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.

일회성 이벤트 핸들러를 객체에 바인딩합니다. 일회성 핸들러는 한 번만 트리거됩니다.

1
Object Worker.once(Object map);

호출 매개변수:

  • map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.

결과 반환:

  • Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.

prependOnceListener

이벤트 핸들러를 객체의 원점에 바인딩

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

호출 매개변수:

  • ev: 문자열, 이벤트 이름을 지정합니다.
  • func: 함수, 이벤트 처리 함수를 지정합니다.

결과 반환:

  • Object, 체인 호출을 용이하게 하기 위해 이벤트 객체 자체를 반환합니다.

이벤트 핸들러를 객체의 원점에 바인딩

1
Object Worker.prependOnceListener(Object map);

호출 매개변수:

  • map: Object, 이벤트 매핑 관계를 지정하며, 객체 속성 이름이 이벤트 이름으로 사용되고 속성 값이 이벤트 처리 함수로 사용됩니다.

결과 반환:

  • 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, 이벤트 매핑 관계를 지정하며, 객체 속성 이름을 이벤트 이름으로 사용하고, 해당 속성의 값을 이벤트 처리 함수로 사용합니다.

결과 반환:

  • 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, 이벤트 매핑 관계를 지정하며, 객체 속성 이름을 이벤트 이름으로 사용하고, 해당 속성의 값을 이벤트 처리 함수로 사용합니다.

결과 반환:

  • 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을 포함하는 값을 반환합니다.