ห่วงเหตุการณ์ Node.js
Node.js เป็นกระบวนการเดียวการใช้งานเธรดเดียว แต่สนับสนุนพร้อมกันผ่านกิจกรรมและการเรียกกลับเพื่อประสิทธิภาพที่สูงมาก
แต่ละ Node.js API เป็นตรงกันและทำงานเป็นหัวข้อแยกโดยใช้ฟังก์ชั่นการโทรไม่ตรงกันและเห็นพ้องด้วย
Node.js อย่างมีนัยสำคัญทั้งหมดของกลไกการจัดกิจกรรมที่จะดำเนินการโดยใช้โหมดการออกแบบโหมดสังเกตการณ์
Node.js มีความคล้ายคลึงกับการป้อนหัวข้อเดียวในขณะที่ (จริง) ห่วงเหตุการณ์จนกว่าจะไม่มีผู้สังเกตการณ์ออกจากเหตุการณ์แต่ละเหตุการณ์ที่ไม่ตรงกันสร้างผู้สังเกตการณ์เหตุการณ์ถ้าเหตุการณ์เกิดขึ้นเรียกว่าฟังก์ชันการเรียกกลับ
การเขียนโปรแกรมเหตุการณ์ที่ขับเคลื่อนด้วย
Node.js โดยใช้แบบจำลองเหตุการณ์ที่ขับเคลื่อนด้วยเมื่อเว็บเซิร์ฟเวอร์ได้รับการร้องขอจากนั้นนำมันออกสำหรับการประมวลผลแล้วการร้องขอบริการเว็บต่อไป
เมื่อมีการร้องขอจะเสร็จสมบูรณ์ก็จะถูกส่งกลับไปยังคิวการประมวลผลคิวเมื่อถึงจุดเริ่มต้นของผลที่ได้จะถูกส่งกลับไปยังผู้ใช้
รุ่นนี้เป็น scalability ประสิทธิภาพมากมีความแข็งแรงมากเพราะเว็บเซิร์ฟเวอร์ที่ได้รับได้รับการร้องขอโดยไม่ต้องรอการดำเนินการใด ๆ ที่อ่านหรือเขียน (นี้ยังเป็นที่รู้จักกันไม่ปิดกั้น IO หรือเหตุการณ์ที่ขับเคลื่อนด้วย IO)
ในรูปแบบเหตุการณ์ที่ขับเคลื่อนด้วยก็สร้างวงหลักที่จะฟังสำหรับเหตุการณ์ที่จะเรียกฟังก์ชั่นโทรกลับเมื่อมีเหตุการณ์มีการตรวจพบกระบวนการทั้งหมดเพื่อให้เหตุการณ์ที่ขับเคลื่อนเพื่อให้บรรลุเป็นเรื่องง่ายมาก ค่อนข้างคล้ายกับรูปแบบการสังเกตการณ์เหตุการณ์จะเทียบเท่ากับธีม (เรื่อง) ในขณะที่ทุกจัดการการลงทะเบียนเข้าร่วมกิจกรรมนี้สอดคล้องกับผู้สังเกตการณ์ (Observer)
Node.js มีหลายตัวในกรณีที่เราสามารถผ่านการแนะนำของโมดูลเหตุการณ์ที่เกิดขึ้นและการผูกและฟังสำหรับเหตุการณ์ที่เกิดขึ้นโดยอินสแตนซ์ระดับ EventEmitter ตัวอย่างต่อไปนี้:
// 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events.EventEmitter();
ขั้นตอนต่อไปจัดการเหตุการณ์ที่มีผลผูกพัน:
// 绑定事件及事件的处理程序 eventEmitter.on('eventName', eventHandler);
เราสามารถเขียนโปรแกรมเหตุการณ์วิกฤติ:
// 触发事件 eventEmitter.emit('eventName');
ตัวอย่าง
สร้างไฟล์ main.js รหัสเป็นดังนี้:// 引入 events 模块 var events = require('events'); // 创建 eventEmitter 对象 var eventEmitter = new events.EventEmitter(); // 创建事件处理程序 var connectHandler = function connected() { console.log('连接成功。'); // 触发 data_received 事件 eventEmitter.emit('data_received'); } // 绑定 connection 事件处理程序 eventEmitter.on('connection', connectHandler); // 使用匿名函数绑定 data_received 事件 eventEmitter.on('data_received', function(){ console.log('数据接收成功。'); }); // 触发 connection 事件 eventEmitter.emit('connection'); console.log("程序执行完毕。");
ลองรันโค้ดข้างต้น:
$ node main.js 连接成功。 数据接收成功。 程序执行完毕。
วิธีการทำงานของแอพลิเคชันโหนด?
ในโหนดฟังก์ชั่นการประยุกต์ใช้ดำเนินการฟังก์ชั่นการดำเนินการเรียกกลับไม่ตรงกันว่าเป็นหน้าที่ที่พารามิเตอร์ที่ผ่านมาได้รับการติดต่อกลับวัตถุข้อผิดพลาดเป็นพารามิเตอร์แรก
ขอให้เราอีกครั้งดูตัวอย่างก่อนหน้านี้สร้าง input.txt เอกสารอ่านดังนี้
本教程官网地址:www.w3big.com
สร้างไฟล์ main.js ดังต่อไปนี้:
var fs = require("fs"); fs.readFile('input.txt', function (err, data) { if (err){ console.log(err.stack); return; } console.log(data.toString()); }); console.log("程序执行完毕");
โครงการดังกล่าวข้างต้น fs.readFile () เป็นฟังก์ชั่นไม่ตรงกันจะใช้ในการอ่านไฟล์ หากเกิดข้อผิดพลาดในขั้นตอนของการอ่านไฟล์ข้อผิดพลาดหลงวัตถุออกจะมีข้อความผิดพลาด
หากไม่มีข้อผิดพลาด readfile ข้ามวัตถุไถลออกเนื้อหาของไฟล์นั้นออกผ่านฟังก์ชันการเรียกกลับ
รันโค้ดข้างต้นผลการดำเนินการดังต่อไปนี้:
程序执行完毕 本教程官网地址:www.w3big.com
ต่อไปเราจะลบไฟล์ input.txt ผลการดำเนินการดังต่อไปนี้:
程序执行完毕 Error: ENOENT, open 'input.txt'
input.txt เพราะไฟล์ไม่ได้อยู่เพื่อให้การส่งออกของข้อความข้อผิดพลาด