Latest web development tutorials

modul Node.js Domain

modul alat Node.js modul alat Node.js

Node.js Domain (domain)untuk menyederhanakan asynchronous kode penanganan eksepsi, Anda dapat menangkap pengecualian penanganan mencoba menangkap tidak bisa menangkap. Pengenalan sintaks modul Domain adalah sebagai berikut:

var domain = require("domain")

modul domain untuk menangani sejumlah operasi IO yang berbeda sebagai sebuah kelompok. Peristiwa pendaftaran dan callback untuk domain, ketika sebuah peristiwa terjadi kesalahan atau melempar kesalahan, objek domain akan diberitahu, tanpa kehilangan konteks, atau menyebabkan kesalahan prosedural segera diluncurkan, dan process.on ( 'uncaughtException') yang berbeda.

Modul domain dapat dibagi menjadi implisit dan eksplisit mengikat Binding:

  • Implisit mengikat: domain variabel yang didefinisikan dalam konteks, otomatis terikat pada objek domain
  • Eksplisit mengikat: variabel tidak didefinisikan dalam konteks domain, kode-terikat secara ke objek domain

cara

Tidak. Metode & deskripsi
1 domain.run (fungsi)
Dalam konteks menjalankan keseluruhan dari fungsi yang disediakan secara implisit mengikat semua operator acara, timer, dan permintaan yang mendasari.
2 domain.add (emitor)
Eksplisit kenaikan acara
3 domain.remove (emitor)
Menghapus acara.
4 domain.bind (callback)
Kembali fungsi disediakan untuk fungsi callback wrapper. Ketika fungsi panggilan dikembalikan, semua kesalahan dilempar akan diarahkan ke acara kesalahan bidang ini.
5 domain.intercept (callback)
Dan domain.bind (callback) mirip. Selain menangkap kesalahan dilemparkan di luar, itu akan mencegat Kesalahan objek dilewatkan ke fungsi ini sebagai parameter.
6 domain.enter ()
Masukkan konteks panggilan asynchronous, terikat ke domain.
7 domain.exit ()
Keluar dari domain saat ini, konteks beralih ke rantai yang berbeda dari panggilan asynchronous. Sesuai domain.enter ().
8 domain.dispose ()
Pelepasan domain objek, dan membuat ini bagian dari proses pemulihan sumber daya simpul.
9 domain.create ()
Mengembalikan sebuah objek domain.

milik

Tidak. Properti & Deskripsi
1 domain.members
Sebuah array domain timer dan emitor acara telah bergabung objek domain.

contoh

Membuat file main.js, kode tersebut adalah sebagai berikut:

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

Kode di atas dijalankan, hasilnya adalah sebagai berikut:

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

modul alat Node.js modul alat Node.js