Hari ini saya akan memberitahu anda tentang kelas EventEmitter. Seperti yang anda ketahui, Node.js mempunyai paradigma pengaturcaraan dipacu peristiwa. Ini bermakna kami akan mentakrifkan beberapa acara dan panggilan balik, acara kami akan dicetuskan dan diproses dalam aliran program kami. Jika anda bertanya mengapa pendekatan sedemikian diguna pakai, ini adalah kerana JavaScript, yang saya jelaskan dengan lebih terperinci dalam artikel saya sebelum ini, menjalankan urutan tunggal dan operasi tak segerak mesti dikendalikan tanpa menyekat dalam beberapa cara.
Jika anda bertanya apa kaitan semua ini dengan kelas EventEmitter, kelas ini menawarkan struktur yang membolehkan kami mengendalikan operasi tak segerak dengan mudah. Sebenarnya, ini ialah pelaksanaan Corak Reka Bentuk Pemerhati.
const EventEmitter = require("events"); class Emitter extends EventEmitter {} const myE = new Emitter(); myE.on("test", () => { console.log("event meydana geldi."); }); myE.on("test", () => { console.log("event meydana geldi."); }); myE.on("test", () => { console.log("event meydana geldi."); }); console.log(myE.eventNames()); myE.emit("test");
Di atas saya menulis contoh mudah tentang cara mentakrif dan memanggil acara. Di sini, kaedah "hidup" sebenarnya mencipta tatasusunan yang dipanggil "ujian" pada objek kosong (objek induk).
{ test: [ [Function (anonymous)], [Function (anonymous)], [Function (anonymous)] ] }
Di sini, kaedah "hidup" dipanggil tiga kali dengan nama eventName dan struktur yang terhasil adalah seperti di atas.
Seperti yang anda boleh meneka, acara bernama "ujian" dipanggil dengan kaedah "memancarkan". Di sini, kaedah foreach mengembalikan tatasusunan ujian dan memanggil fungsi di dalamnya.
Jadi di manakah struktur ini digunakan?
Contohnya, dalam acara DOM;
const btn = document.getElementById("btn"); btn.addEventListener("click", () => { console.log("clicked"); });
Sebagai contoh, dalam permintaan Rangkaian dalam aplikasi Node.js;
const http = require("http"); const req = http .request( { method: "GET", hostname: "jsonplaceholder.typicode.com", path: "/todos/1" }, (res) => { res.on("data", (chunk) => { console.log(chunk.toString()); }); res.on("end", () => { console.log("response ended."); }); } ) .end();
Atas ialah kandungan terperinci Node.js EventEmitter. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!