Home Tutorial Nodejs Node.js – Bài 3: Khái niệm callback

Node.js – Bài 3: Khái niệm callback

8 min read
0
130

Gọi lại là gì?

Callback là phần không thể thiếu trong xử lý bất đồng bộ.  Một chức năng gọi lại(callback) được gọi khi hoàn thành một nhiệm vụ nhất định – thường liên quan đến các tác vụ IO như đọc file/gọi ajax/query database . .  . . Nodejs sử dụng nhiều các cuộc gọi lại. Tất cả các API của Nodejs được viết theo cách mà chúng hỗ trợ gọi lại.

Ví dụ: một chức năng đọc tệp có thể bắt đầu đọc tệp và trả điều khiển về môi trường thực thi ngay lập tức để có thể thực hiện lệnh tiếp theo. Khi tệp I/O hoàn tất, nó sẽ gọi hàm gọi lại trong khi truyền hàm gọi lại, nội dung của tệp dưới dạng tham số. Vì vậy, không có chặn hoặc chờ Tệp I/O. Điều này làm cho Node.js có khả năng mở rộng cao, vì nó có thể xử lý một số lượng lớn yêu cầu mà không cần đợi bất kỳ chức năng nào trả về kết quả.

Ví dụ về xử lý tuần tự (Blocking Code )

Tạo một tệp văn bản có tên input.txt với nội dung sau –

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Tạo một tệp js có tên main.js với đoạn mã sau –

var fs = require("fs");
var data = fs.readFileSync('input.txt');

console.log(data.toString());
console.log("Program Ended");

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác minh đầu ra.

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!
Program Ended

Ví dụ về bất đồng bộ (bất tuần tự – Non-Blocking Code)

Tạo một tệp văn bản có tên input.txt với nội dung sau.

Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Cập nhật main.js để có đoạn mã sau –

var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
   if (err) return console.error(err);
   console.log(data.toString());
});

console.log("Program Ended");

Bây giờ hãy chạy main.js để xem kết quả –

$ node main.js

Xác minh đầu ra.

Program Ended
Tutorials Point is giving self learning content
to teach the world in simple and easy way!!!!!

Hai ví dụ này giải thích khái niệm cuộc gọi chặn và không chặn.

  • Ví dụ đầu tiên cho thấy rằng chương trình sẽ chặn cho đến khi nó đọc tệp và sau đó chỉ nó tiến hành kết thúc chương trình.
  • Ví dụ thứ hai cho thấy chương trình không chờ đọc tệp và tiến hành in “Program Ended” và đồng thời, chương trình không bị chặn tiếp tục đọc tệp.

Do đó, một chương trình chặn thực thi rất nhiều theo trình tự. Từ quan điểm lập trình, việc triển khai logic sẽ dễ dàng hơn nhưng các chương trình không chặn không thực hiện theo trình tự. Trong trường hợp một chương trình cần sử dụng bất kỳ dữ liệu nào để xử lý, dữ liệu đó nên được giữ trong cùng một khối để thực hiện tuần tự.

Load More Related Articles
Load More By quangvu
  • Node.js – Bài 13: API RESTful

    Kiến trúc REST là gì? REST là viết tắt của REpresentational State Transfer. REST là kiến ​…
  • Node.js – Bài 11: Web Module

    Kiến trúc ứng dụng web Một ứng dụng Web thường được chia thành bốn lớp – Client  − L…
  • Node.js – Bài 10: Global Objects

    Các đối tượng toàn cầu của Node.js có bản chất toàn cầu và chúng có sẵn trong tất cả các m…
Load More In Nodejs

Check Also

Tự làm web chatGPT đơn giản cho phép dùng nhiều OpenAI key

Trong thời đại công nghệ phát triển như hiện nay, chatbot đang dần trở thành một giải pháp…