Trong các bài viết trước đó, chúng tôi đã hướng dẫn về REPL và NPM trong Node.js. Bài viết này tiếp tục chủ đề Node.js và giới thiệu về Callback - một khái niệm quan trọng.
Hiểu rõ về Callback trong Node.js
Khái niệm về Callback trong Node.js
Callback trong Node.js là một loại hàm không đồng bộ, được gọi sau khi hoàn thành một tác vụ cụ thể. Node.js sử dụng nhiều hàm callback, đặc biệt là trong tất cả các API của nó được thiết kế theo mô hình callback.
Để hiểu rõ hơn về hàm callback trong Node.js, bạn có thể tưởng tượng một hàm đọc file sẽ bắt đầu quá trình đọc file và sau đó trả về quyền kiểm soát cho môi trường để thực thi các lệnh tiếp theo. Khi quá trình I/O của file hoàn tất, hàm callback sẽ được gọi, sử dụng nội dung của file làm tham số. Do đó, không có sự chặn trở hoặc phải đợi khi đọc/ghi file.
Nói chung, hàm callback giúp Node.js thực hiện nhiều yêu cầu hơn mà không cần phải đợi kết quả trả về.
Ví dụ về Mã chặn (Blocking)
Tạo một tệp văn bản có tên là input.txt với nội dung sau:
Tutorials Point cung cấp nội dung tự học
để giảng dạy thế giới một cách đơn giản và dễ dàng!!!!!
Tạo tệp js và đặt tên là main.js
var fs = require('fs');
var data = fs.readFileSync('input.txt');
console.log(data.toString());
console.log('Chương trình Kết thúc');
Tiếp theo, mở file main.js để xem kết quả bằng cách mở command prompt Node.js và nhập lệnh dưới đây:
$ node main.js
Xác nhận đầu ra:
Tutorials Point chia sẻ nội dung tự học
để giảng dạy cho thế giới một cách đơn giản và dễ dàng!!!!!
Chương trình Đã Kết Thúc
Ví dụ về Mã Không Chặn
Tạo tệp văn bản và đặt tên là input.txt với nội dung sau:
Tutorials Point chia sẻ nội dung tự học
để giảng dạy cho thế giới một cách đơn giản và dễ dàng!!!!!
Cập nhật tệp main.js bằng cách sử dụng đoạn mã dưới đây:
var fs = require('fs');
fs.readFile('input.txt', function (err, data) {
if (err) return console.error(err);
console.log(data.toString());
});
console.log('Chương trình kết thúc');
Tiếp theo, mở command prompt Node.js và nhập lệnh dưới đây để chạy main.js và kiểm tra kết quả:
$ node main.js
2 ví dụ trên giải thích cách hoạt động của các cơ chế blocking và non-blocking. Trong đó:
- Ví dụ đầu tiên thể hiện chương trình sẽ tạm dừng cho đến khi hoàn thành việc đọc file và sau đó kết thúc chương trình.
- Ví dụ thứ hai minh họa chương trình không chờ đợi khi đọc file và in ra thông báo 'Chương trình Kết thúc' ngay lập tức, không giữ trạng thái chờ và tiếp tục thực hiện đọc file.
Tóm lại, chương trình blocking thực thi theo thứ tự và trình tự, phù hợp để xử lý các lệnh logic có trình tự. Ngược lại, chương trình non-blocking không tuân theo một thứ tự cố định và có thể tiếp tục thực hiện các tác vụ khác mà không chờ đợi kết quả của tác vụ trước đó.
Bài viết trên đây giới thiệu về Callback trong Node.js. Trong các bài viết tiếp theo, sẽ còn nói về Sự kiện trong Node.js.
Nếu có bất kỳ thắc mắc hoặc câu hỏi nào cần được giải đáp, các bạn độc giả hãy chia sẻ ý kiến của mình trong phần bình luận dưới bài viết nhé.