Latest web development tutorials

Node.js Domain-Modul

Node.js Werkzeugmodul Node.js Werkzeugmodul

Node.js Domain (Domäne)asynchrone Exception Handling Code zu vereinfachen, können Sie die Ausnahmebehandlung versuchen fangen fangen nicht erfassen können. Die Einführung von Domänenmodul Syntax lautet wie folgt:

var domain = require("domain")

Domänenmodul eine Anzahl von verschiedenen EA-Operationen als eine Gruppe zu behandeln. Registrierung Veranstaltungen und Rückrufe zu Domäne, wenn ein Fehler Ereignis eintritt oder einen Fehler melden, wird Domain-Objekte benachrichtigt werden, ohne den Kontext zu verlieren, noch auf Verfahrensfehler sofort gestartet und process.on führen ( 'uncaughtException') sind unterschiedlich.

Domain-Modul kann unterteilt werden in implizite und explizite Bindung Bindung:

  • Implizite Bindung: die variable Domäne im Kontext definiert, automatisch an die Domain-Objekte gebunden
  • Explizite Bindung: Die Variable wird in der Domäne Kontext Code gebunden an die Domain-Objekte nicht definiert

Weg

Nein. Method & Beschreibung
1 domain.run (Funktion)
Im Zusammenhang mit der das gesamte Spektrum von Funktionen laufen implizit verbindlich alle von der Event-Dispatcher, Timer und der zugrunde liegenden Anfrage zur Verfügung gestellt.
2 domain.add (Emitter)
Explizite Erhöhung Ereignis
3 domain.remove (Emitter)
Ereignis löschen.
4 domain.bind (Rückruf)
Funktion gibt für einen Callback-Wrapper-Funktionen zur Verfügung gestellt. Wenn der Funktionsaufruf zurückgegeben wird, werden alle geworfen Fehler an den Fehlerereignis dieses Feldes gerichtet werden.
5 domain.intercept (Rückruf)
Und domain.bind (Rückruf) ist ähnlich. Zusätzlich Fehler zu erfassen außen geworfen wird, wird es die Fehler abfangen Objekt zu dieser Funktion als Parameter übergeben wird.
6 domain.enter ()
Geben Sie den Kontext eines asynchronen Aufruf, gebunden an die Domäne.
7 domain.exit ()
Beenden Sie die aktuelle Domäne, Kontextwechsel zu einer anderen Kette von asynchronen Aufruf. Entspricht domain.enter ().
8 domain.dispose ()
Die Freigabe einer Domain-Objekt, und machen diesen Teil der Recovery-Prozess Knoten Ressourcen.
9 domain.create ()
Gibt ein Domänenobjekt.

Immobilien

Nein. Property & Beschreibung
1 domain.members
Eine Reihe von Domain-Timer und Ereignis-Emitter hat Objekt verbunden Domäne.

Beispiele

Erstellen main.js Datei, wird der Code wie folgt:

var EventEmitter = require("events").EventEmitter;
var domain = require("domain");

var emitter1 = new EventEmitter();

// 创建域
var domain1 = domain.create();

domain1.on('error', function(err){
   console.log("domain1 处理这个错误 ("+err.message+")");
});

// 显式绑定
domain1.add(emitter1);

emitter1.on('error',function(err){
   console.log("监听器处理此错误 ("+err.message+")");
});

emitter1.emit('error',new Error('通过监听器来处理'));

emitter1.removeAllListeners('error');

emitter1.emit('error',new Error('通过 domain1 处理'));

var domain2 = domain.create();

domain2.on('error', function(err){
   console.log("domain2 处理这个错误 ("+err.message+")");
});

// 隐式绑定
domain2.run(function(){
   var emitter2 = new EventEmitter();
   emitter2.emit('error',new Error('通过 domain2 处理'));   
});


domain1.remove(emitter1);
emitter1.emit('error', new Error('转换为异常,系统将崩溃!'));

Der obige Code ausgeführt wird, die Ergebnisse sind wie folgt:

监听器处理此错误 (通过监听器来处理)
domain1 处理这个错误 (通过 domain1 处理)
domain2 处理这个错误 (通过 domain2 处理)

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: 转换为异常,系统将崩溃!
    at Object.<anonymous> (/www/node/main.js:40:24)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:929:3

Node.js Werkzeugmodul Node.js Werkzeugmodul