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