Khái niệm callback là gì trong Node.js

Callback là gì?

Callback (cuộc gọi lại) là một tương đương không đồng bộ cho một chức năng. Hàm callback được gọi khi hoàn thành một nhiệm vụ nhất định. Node sử dụng rất nhiều các callback. Tất cả các API của Node được viết theo cách chúng hỗ trợ các callback.

Ví dụ, một chức năng đọc tệp có thể bắt đầu đọc tệp và trả lại control cho môi trường thực thi ngay lập tức để có thể thực hiện lệnh tiếp theo. Một khi tệp I/O hoàn tất, nó sẽ gọi hàm callback trong khi truyền hàm callback, nội dung của tệp dưới dạng tham số. Vì vậy, không có chặn hoặc chờ cho 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ý số lượng yêu cầu cao mà không cần chờ bất kỳ chức năng nào trả về kết quả.

Ví dụ về 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 code 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 nhận đầu ra.

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

Ví dụ về 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ó 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("Program Ended");

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

$ node main.js

Xác nhận đầ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 blocking and non-blocking call

  • Ví dụ đầu tiên cho thấy chương trình chặn cho đến khi nó đọc tệp và sau đó chỉ 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 chặn tiếp tục đọc tệp.

Vì vậy, một chương trình blocking thực hiện rất nhiều theo trình tự. Từ quan điểm lập trình, việc triển khai logic dễ dàng hơn nhưng các chương trình non-blocking 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 cần xử lý, nó phải được giữ trong cùng một khối để thực hiện tuần tự.

Cảm ơn các bạn đã theo dõi bài viết!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *