Object-ingebouwd object

Objectwerker

Het Worker-object is een object dat wordt gebruikt om onderliggende threads te maken, die in het programma kunnen worden gemaakt en verwerkt. Een Worker-object kan worden opgevat als een JavaScript-proces dat wordt uitgevoerd in een andere thread dan de hoofdthread. Worker deelt geen geheugen met de hoofdthread en blokkeert de hoofdthread niet. Het is een reguliere asynchrone programmeermethode.

De constructor van het Worker-object is als volgt:

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

in,pathDe parameter specificeert het JavaScript-bestandspad van de nieuwe thread. U kunt bijvoorbeeld een work.js-bestand schrijven met de volgende inhoud:

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

Voer in het hoofdprogramma work.js uit met de volgende code:

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

Na het uitvoeren kunt u de uitvoer "Hallo van werknemer" zien op de console van het hoofdprogramma.

Stel dat we in het volgende voorbeeld een langlopende berekening hebben en deze in een andere thread willen plaatsen om te verwerken zonder dat deze berekening in de hoofdthread wordt geblokkeerd. code tonen zoals hieronder:

Hoofddraad:

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

In dit voorbeeld maken we een worker-thread via de constructor van het Worker-object om de berekening van de Fibonacci-reeks te verwerken. De hoofdthread geeft gegevens door aan de worker-thread via de methode postMessage() en verkrijgt de verwerkingsresultaten via de onmessage-gebeurtenis . Tegelijkertijd geeft de hoofdthread het bericht 'nog steeds werkend' weer om te bewijzen dat deze computertaak is 'gedelegeerd' naar de werkthread en andere dingen kan blijven verwerken.

De stijl van de worker-threadcode is als volgt:

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

In de werkthread luisterden we naar de berichten die door de hoofdthread werden verzonden via de invoerparameter postMessage(), berekenden we de opgegeven Fibonacci-reeks en stuurden de berekeningsresultaten terug naar de hoofdthread via de Master.postMessage() -methode.

Dit is het meest eenvoudige Worker-voorbeeld. Bij het ontwikkelen met Worker-objecten zijn de hoofdthread en de worker-thread volledig asynchroon. Elk Worker-object is een afzonderlijke thread. Het Worker-object dat in de hoofdthread is geïnstantieerd, genereert geen enkel blok.

erfenis relatie

Constructeur

Worker

Constructor van werkobjecten

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

Oproepparameters:

  • path: String, specificeert het Worker-invoerscript en accepteert alleen absolute paden
  • opts: Object, constructieoptie, nog niet ondersteund

statische eigenschappen

defaultMaxListeners

Geheel getal, het standaard globale maximale aantal luisteraars

1
static Integer Worker.defaultMaxListeners;

eigenschappen van leden

onload

Functie, query en binding accepteren de gebeurtenis load message, die gelijk is aan on("load", func);

1
Function Worker.onload;

onmessage

Functie, query en binding accepteren postMessage-berichtgebeurtenissen, gelijk aan on("message", func);

1
Function Worker.onmessage;

onerror

Functie, query en binding accepteren foutmeldingsgebeurtenissen, gelijk aan on("error", func);

1
Function Worker.onerror;

lid functie

postMessage

Stuur een bericht naar Meester of Werknemer,

1
Worker.postMessage(Value data);

Oproepparameters:

  • data: Waarde, specificeert de inhoud van het verzonden bericht

on

Bind een gebeurtenishandler aan het object

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

Oproepparameters:

  • ev: String, specificeert de naam van de gebeurtenis
  • func: Functie, specificeer de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

Bind een gebeurtenishandler aan het object

1
Object Worker.on(Object map);

Oproepparameters:

  • map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

addListener

Bind een gebeurtenishandler aan het object

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

Oproepparameters:

  • ev: String, specificeert de naam van de gebeurtenis
  • func: Functie, specificeer de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

Bind een gebeurtenishandler aan het object

1
Object Worker.addListener(Object map);

Oproepparameters:

  • map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

prependListener

Bind een gebeurtenishandler aan de oorsprong van het object

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

Oproepparameters:

  • ev: String, specificeert de naam van de gebeurtenis
  • func: Functie, specificeer de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

Bind een gebeurtenishandler aan de oorsprong van het object

1
Object Worker.prependListener(Object map);

Oproepparameters:

  • map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

once

Bind een eenmalige gebeurtenishandler aan het object. De eenmalige gebeurtenishandler wordt slechts één keer geactiveerd.

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

Oproepparameters:

  • ev: String, specificeert de naam van de gebeurtenis
  • func: Functie, specificeer de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

Bind een eenmalige gebeurtenishandler aan het object. De eenmalige gebeurtenishandler wordt slechts één keer geactiveerd.

1
Object Worker.once(Object map);

Oproepparameters:

  • map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

prependOnceListener

Bind een gebeurtenishandler aan de oorsprong van het object

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

Oproepparameters:

  • ev: String, specificeert de naam van de gebeurtenis
  • func: Functie, specificeer de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

Bind een gebeurtenishandler aan de oorsprong van het object

1
Object Worker.prependOnceListener(Object map);

Oproepparameters:

  • map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

off

De toewijzing van een functie uit de objectverwerkingswachtrij ongedaan maken

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

Oproepparameters:

  • ev: String, specificeert de naam van de gebeurtenis
  • func: Functie, specificeer de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

Annuleer alle functies in de wachtrij voor objectverwerking

1
Object Worker.off(String ev);

Oproepparameters:

  • ev: String, specificeert de naam van de gebeurtenis

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

De toewijzing van een functie uit de objectverwerkingswachtrij ongedaan maken

1
Object Worker.off(Object map);

Oproepparameters:

  • map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

removeListener

De toewijzing van een functie uit de objectverwerkingswachtrij ongedaan maken

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

Oproepparameters:

  • ev: String, specificeert de naam van de gebeurtenis
  • func: Functie, specificeer de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

Annuleer alle functies in de wachtrij voor objectverwerking

1
Object Worker.removeListener(String ev);

Oproepparameters:

  • ev: String, specificeert de naam van de gebeurtenis

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

De toewijzing van een functie uit de objectverwerkingswachtrij ongedaan maken

1
Object Worker.removeListener(Object map);

Oproepparameters:

  • map: Object, specificeert de gebeurtenistoewijzingsrelatie, de objectattribuutnaam wordt gebruikt als de gebeurtenisnaam en de waarde van het attribuut wordt gebruikt als de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

removeAllListeners

Annuleert alle luisteraars voor alle gebeurtenissen uit de verwerkingswachtrij van het object. Als er een gebeurtenis is opgegeven, worden alle luisteraars voor de opgegeven gebeurtenis verwijderd.

1
Object Worker.removeAllListeners(String ev);

Oproepparameters:

  • ev: String, specificeert de naam van de gebeurtenis

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

Annuleert alle luisteraars voor alle gebeurtenissen uit de verwerkingswachtrij van het object. Als er een gebeurtenis is opgegeven, worden alle luisteraars voor de opgegeven gebeurtenis verwijderd.

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

Oproepparameters:

  • evs: Array, geef de naam van de gebeurtenis op

Resultaten retourneren:

  • Object, retourneert het gebeurtenisobject zelf om kettingoproepen te vergemakkelijken

setMaxListeners

De standaardlimiet voor het aantal luisteraars, alleen voor compatibiliteit

1
Worker.setMaxListeners(Integer n);

Oproepparameters:

  • n: geheel getal, geef het aantal gebeurtenissen op

getMaxListeners

Krijgt het standaardlimietaantal luisteraars, alleen voor compatibiliteit

1
Integer Worker.getMaxListeners();

Resultaten retourneren:

  • Integer, retourneert de standaardlimiethoeveelheid

listeners

Voer een query uit op de luisteraararray voor de opgegeven gebeurtenis van het object

1
Array Worker.listeners(String ev);

Oproepparameters:

  • ev: String, specificeert de naam van de gebeurtenis

Resultaten retourneren:

  • Array, retourneert de luisteraararray voor de opgegeven gebeurtenis

listenerCount

Vraag het aantal luisteraars op voor de opgegeven gebeurtenis van het object

1
Integer Worker.listenerCount(String ev);

Oproepparameters:

  • ev: String, specificeert de naam van de gebeurtenis

Resultaten retourneren:

  • Integer, retourneert het aantal luisteraars voor de opgegeven gebeurtenis

Vraag het aantal luisteraars op voor de opgegeven gebeurtenis van het object

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

Oproepparameters:

  • o: Waarde, specificeert het object van de query
  • ev: String, specificeert de naam van de gebeurtenis

Resultaten retourneren:

  • Integer, retourneert het aantal luisteraars voor de opgegeven gebeurtenis

eventNames

Naam van query-listenergebeurtenis

1
Array Worker.eventNames();

Resultaten retourneren:

  • Array, retourneert een array met gebeurtenisnamen

emit

Activeer actief een gebeurtenis

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

Oproepparameters:

  • ev: String, gebeurtenisnaam
  • args: ..., gebeurtenisparameters worden doorgegeven aan de gebeurtenisverwerkingsfunctie

Resultaten retourneren:

  • Boolean, retourneert de gebeurtenistriggerstatus, retourneert waar als er een responsgebeurtenis is, retourneert anders false

toString

Retourneert de tekenreeksweergave van het object. Over het algemeen wordt '[Native Object]' geretourneerd. Het object kan opnieuw worden geïmplementeerd op basis van zijn eigen kenmerken.

1
String Worker.toString();

Resultaten retourneren:

  • String, retourneert de tekenreeksrepresentatie van het object

toJSON

Retourneert een weergave in JSON-indeling van het object, waarbij doorgaans een verzameling leesbare eigenschappen wordt geretourneerd die door het object zijn gedefinieerd.

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

Oproepparameters:

  • key: Tekenreeks, niet gebruikt

Resultaten retourneren:

  • Value, retourneert een waarde die JSON-serialiseerbaar bevat