Object-ingebouwd object

ObjectGebeurtenis

De Event-module biedt een gebeurtenisobject voor gezamenlijke gedeelde gegevensbewerkingen. Het maakt gesynchroniseerde operaties tussen meerdere vezels (coroutines) mogelijk om coöperatieve multitasking te bereiken. Het gebeurtenisobject heeft drie methoden: wachten, pulseren en wissen. De wachtmethode blokkeert de huidige vezel totdat de gebeurtenis wordt geactiveerd, de pulsmethode maakt alle vezels wakker die op de gebeurtenis wachten, en de wismethode reset de gebeurtenisvlag naar vals. door het gebruiken vancoroutine.EventModule kunnen ontwikkelaars de uitvoeringsvolgorde en het delen van gegevens tussen vezels controleren om complexe bedrijfslogica te implementeren.

Stel dat we gegevens moeten delen tussen twee vezels, maar de volgorde van uitvoering ervan is onzeker. U kunt de uitvoeringsvolgorde van vezels regelen via een gebeurtenisobject om ervoor te zorgen dat de ene vezel wordt geactiveerd voordat de andere wordt uitgevoerd.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
const coroutine = require('coroutine'); var evt = new coroutine.Event(); coroutine.start(function() { console.log('[1] wait for event'); evt.wait(); console.log('[1] receive event'); }); coroutine.start(function() { loop: for (var i = 0; i < 10; i++) { console.log('[2] do some work'); if (i === 5) { evt.pulse(); } coroutine.sleep(1000); } });

In het bovenstaande voorbeeld hebben we een gebeurtenisobject evt gemaakt, de wachtmethode in vezel 1 gebruikt om te wachten tot de gebeurtenis werd geactiveerd, en de pulsmethode gebruikt om de gebeurtenis in vezel 2 te activeren. Wanneer i gelijk is aan 5, activeert vezel 2 de gebeurtenis. , Fiber 1 wordt gewekt door luisteren naar gebeurtenissen en gaat door met de uitvoering. Bij dit proces worden er geen sloten of andere synchronisatietools gebruikt tussen de twee vezels, maar zorgen ze wel voor datasynchronisatie op vezelniveau.

erfenis relatie

Constructeur

Event

gebeurtenisobjectconstructor

1
new Event(Boolean value = false);

Oproepparameters:

  • value: Booleaanse waarde, specificeert of er moet worden gewacht, gewacht wanneer waar, standaard is onwaar

lid functie

isSet

Bepaal of het gebeurtenisobject waar is

1
Boolean Event.isSet();

Resultaten retourneren:

  • BooleanAls de gebeurtenis waar is, retourneert u waar

set

Activeer de gebeurtenis (verander de gebeurtenisstatus in true) en roep pulse() aan

1
Event.set();

pulse

Activeer alle vezels die op deze gebeurtenis wachten

1
Event.pulse();

clear

Gebeurtenis resetten (verander de gebeurtenisstatus naar false)

1
Event.clear();

wait

wachten op een gebeurtenis

1
Event.wait();

acquire

Word eigenaar van het slot

1
Boolean Event.acquire(Boolean blocking = true);

Oproepparameters:

  • blocking: Booleaanse waarde, specificeert of er moet worden gewacht, gewacht wanneer waar, standaard is waar

Resultaten retourneren:

  • Boolean, geeft terug of het slot met succes is verworven, waar geeft een succesvolle acquisitie aan.

Om het eigendom van het slot te verkrijgen wordt gebruik gemaakt van de acquire-methode. Wanneer het slot zich in de verkrijgbare staat bevindt, retourneert deze methode onmiddellijk true.

Wanneer het slot niet kan worden verkregen en de blokkering waar is, gaat de huidige vezel in de slaapstand. Wanneer andere vezels het slot vrijgeven, retourneert deze methode waar.

Wanneer de vergrendeling niet kan worden verkregen en de blokkering onwaar is, retourneert de methode onwaar.


release

Geef het eigendom van het slot vrij

1
Event.release();

Met deze methode wordt het eigendom van het slot vrijgegeven of wordt er een fout gegenereerd als de huidige glasvezel geen eigenaar van het slot is.


count

Vraag het huidige aantal wachtende taken op

1
Integer Event.count();

Resultaten retourneren:

  • Integer, retourneert het aantal taken

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 Event.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 Event.toJSON(String key = "");

Oproepparameters:

  • key: Tekenreeks, niet gebruikt

Resultaten retourneren:

  • Value, retourneert een waarde die JSON-serialiseerbaar bevat