Latest web development tutorials

Node.js módulo de dominio

Módulo herramienta Node.js Módulo herramienta Node.js

Node.js de dominio (dominio)para simplificar el código de control de excepciones asíncrono, se puede tomar el control de excepciones intento de captura no puede capturar. La introducción de la sintaxis módulo de dominio es el siguiente:

var domain = require("domain")

módulo de dominio para manejar un número de diferentes operaciones de IO como un grupo. eventos de registro y devoluciones de llamada a dominio, cuando se produce un evento de error o lanzar un error, se notificará a los objetos de dominio, sin perder el contexto, ni conducen a errores de procedimiento puesto en marcha inmediatamente, y process.on ( 'uncaughtException') son diferentes.

módulo de dominio puede ser dividido en implícita y explícita de unión Encuadernación:

  • Implícita de unión: el dominio variable se define en el contexto, con destino automáticamente a los objetos de dominio
  • unión explícita: la variable no se define en el contexto de dominio, de manera unida código a los objetos de dominio

camino

No. Método y Descripción
1 domain.run (función)
En el contexto de ejecutar toda la gama de funciones proporcionadas implícitamente vinculante todo el despachador de eventos, temporizadores, y la solicitud subyacente.
2 domain.add (emisor)
evento incremento explícita
3 domain.remove (emisor)
Eliminar evento.
4 domain.bind (devolución de llamada)
devuelve la función es proporcionada por una función del usuario envoltura. Cuando se devuelve la llamada a la función, todos los errores generados serán dirigidos al evento de error de este campo.
5 domain.intercept (devolución de llamada)
Y domain.bind (devolución de llamada) es similar. Además de la captura de error es arrojado fuera, interceptará el objeto de error se pasa a esta función como un parámetro.
6 domain.enter ()
Introducir el contexto de una llamada asincrónica, con destino al dominio.
7 domain.exit ()
Salir del dominio actual, cambio de contexto a una cadena diferente de la llamada asincrónica. Corresponde domain.enter ().
8 domain.dispose ()
La liberación de un objeto de dominio, y hacer que esta parte de los recursos del nodo de proceso de recuperación.
9 domain.create ()
Devuelve un objeto de dominio.

propiedad

No. Propiedad y Descripción
1 domain.members
Una serie de contadores de tiempo de dominio y emisor de sucesos se ha unido objeto de dominio.

Ejemplos

Crear archivo main.js, el código es el siguiente:

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('转换为异常,系统将崩溃!'));

El código anterior se ejecuta, los resultados son los siguientes:

监听器处理此错误 (通过监听器来处理)
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

Módulo herramienta Node.js Módulo herramienta Node.js