Nội dung chính
Callback là gì?
Callback có tính chất không đồng bộ. Một hàm callback được gọi khi hoàn thành một nhiệm vụ cụ thể. Tất cả các API của Node đều được viết theo các cách của hàm callback. Xem ví dụ để hiểu callback trong node.js
Ví dụ, với một hàm đọc file bắt đầu với việc đọc file và hệ thống tiếp tục thực thi lệnh tiếp theo. Khi phần đọc file được hoàn thành, nó sẽ gọi về một hàm callback, với nội dung của file là tham số. Do đó sẽ không có blocking hoặc chờ khi đọc File mà hệ thống vẫn tiếp tục thực thi các lệnh tiếp theo. Nó làm cho Node.js có hiệu năng cao hơn, như có số lượng request cao hơn mà không cần phải chờ kết quả trả về.
Ví dụ Blocking Code
Tạo một dòng text với tên input.txt với nội dung sau đây:
Vi du Callback trong Node.js
Tạo một file js với tên callback1.js với nội dung sau đây:
var fs = require("fs"); var data = fs.readFileSync('input.txt'); console.log(data.toString()); console.log("Ket thuc chuong trinh.");
Bây giờ chạy lệnh sau để xem kết quả:
> node callback1.js
Kết quả:
Ví dụ Non-Blocking Code
Tạo một file với tên input.txt với nội dung sau đây:
Vi du Callback trong Node.js
Cập nhật callback2.js với dòng code sau:
var fs = require("fs"); fs.readFile('input.txt', function (err, data) { if (err) { return console.error(err); } console.log(data.toString()); }); console.log("Ket thuc chuong trinh.");
Bây giờ chạy callback2.js để xem kết quả:
> node callback2.js
Kết quả:
Hai ví dụ trên giải thích định nghĩa cách gọi blocking và non-blocking. Ví dụ đầu tiên chỉ ra rằng chương trình bị khóa cho đến khi nó hoàn thành nhiệm vụ đọc file và chỉ tiếp tục chạy vài giây sau đó, chương trình thứ 2 không đợi cho việc đọc file và tiếp tục in "Ket thuc chuong trinh." cùng thời điểm thực hiện chương trình.