Latest web development tutorials

Node.js를 도메인 모듈

Node.js를 도구 모듈 Node.js를 도구 모듈

Node.js를 도메인 비동기 예외 처리 코드를 단순화하기 (도메인),당신은 예외 처리 시도 캐치를 캡처 할 수 없습니다 잡을 수 있습니다. 다음과 같이 도메인 모듈 구문의 도입은 다음과 같습니다

var domain = require("domain")

도메인 모듈 그룹으로 다른 IO 동작의 수를 처리한다. 오류 이벤트가 발생하거나 오류가 발생하는 경우 등록 이벤트 및 도메인에 대한 콜백, 도메인 객체가 문맥을 잃지 않고, 통지, 나 절차를 즉시 시작 오류 및 process.on으로 이어질됩니다 ( '의 uncaughtException')는 다르다.

도메인 모듈은 암시 적 및 명시 적 결합 결합으로 나눌 수있다 :

  • 암시 적 결합 : 맥락에서 정의 된 가변 도메인을 자동 도메인 객체에 바인딩
  • 명시 적 결합 : 도메인 객체 변수가 도메인 콘텍스트에 정의되지 않은 코드 - 결합 방식

방법

아니오. 방법 및 설명
(1) domain.run (기능)
의 맥락에서 암시 적으로 이벤트 디스패처, 타이머 및 기본 요청을 모두 결합 제공하는 기능의 범위를 실행합니다.
domain.add (에미 터)
명시 적 증가 이벤트
3 domain.remove (에미 터)
이벤트를 삭제합니다.
4 domain.bind (콜백)
함수가 반환은 콜백 래퍼 기능이 제공된다. 함수 호출이 리턴되면, 모든 에러 발생이 분야의 에러 이벤트에 관한 것이다.
(5) domain.intercept (콜백)
그리고 domain.bind (콜백)와 유사하다. 에러 캡처 외에 외부에 발생되고, 그것은 오류 객체 파라미터로서이 함수에 전달 가로채는 것이다.
6 domain.enter ()
도메인에 결합 비동기 호출의 컨텍스트를 입력합니다.
(7) domain.exit ()
비동기 호출의 다른 체인에 현재 도메인, 컨텍스트 스위치를 종료합니다. domain.enter 해당합니다 ().
8 domain.dispose ()
다음은 도메인 개체의 릴리스 및 복구 프로세스 노드 자원이 부분을 확인합니다.
9 domain.create ()
도메인 오브젝트를 돌려줍니다.

재산

아니오. 부동산 및 설명
(1) domain.members
도메인 타이머 및 이벤트 이미 터의 배열이 도메인 객체에 합류했다.

main.js 파일을 만들고 다음과 같이 코드 :

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

상기 코드는 다음과 같은 결과가 실행된다 :

监听器处理此错误 (通过监听器来处理)
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를 도구 모듈 Node.js를 도구 모듈