Latest web development tutorials

ห่วงเหตุการณ์ 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 เพราะไฟล์ไม่ได้อยู่เพื่อให้การส่งออกของข้อความข้อผิดพลาด