Callback là một khái niệm không mới trong lập trình. Tuy nhiên, nó là một trong những khái niệm khá lằng ngoằng và dễ nhầm lẫn. Vì vậy để dễ hiểu hơn về callback trong bài hôm nay chúng ta sẽ đề cập đến callback trong javascript vì calback trong javascript là đơn giản nhất

CALLBACK TRONG JAVASCRIPT

Khái niệm về callback

Đầu tiên, xin nhắc lại đôi chút về khá niệm callback:

A callback is a piece of executable code that is passed as 
an argument to other code, which is expected to call back
(execute) the argument at some convenient time.

Nói một cách dễ hiểu, callback tức là ta truyền một đoạn code (Hàm A) này vào một đoạn code khác (Hàm B). Tới một thời điểm nào đó, Hàm A sẽ được hàm B gọi lại (callback).

Tới đây các bạn vẫn chưa hiểu? Chưa hiểu là điều hoàn toàn bình thường vì ngày xưa khi nghe các giảng viên dạy cái này mình cũng ko hiểu gì cả =))). Để dễ hiểu hơn chúng ta đến với ví dụ của callback trong jQuery các bạn nhé

CALLBACK TRONG JAVASCRIPT image 1

Ví dụ của callback. Ứng dụng trong jQuery

Bạn có việc phải đi công tác xa nhà. Bạn dặn người nhà, trong thời gian bạn đi, nếu như có ai giao hàng tới, hãy đem hàng đem cho hàng xóm. Hàm A ở đây là việc đem hàng cho hàng xóm:

function demHang(hang) {
   return console.log("Đem hang " + hang);  
}

Hàm B ở đây là việc người ở nhà nhận hàng. Ta truyền hàm A vào như 1 argument cho hàm B, tại 1 thời điểm nào đó, hàm B sẽ gọi hàm A (Tức là người nhà mang hàng cho hàng xóm).

function oNha(nguoinha, demHang) {
   var hang = "Hàng đã nhận";
   demHang(hang);  
}

Như các bạn thấy, hàm A được truyền vào như 1 argument. Các bạn biết jQuery có thể sử dụng rất nhiều callback mà ko biết

Ứng dụng của callback

  • Gọi 1 hàm khi có 1 số sự kiện xảy ra. VD như khi click vào 1 nút ta gọi hàm A, khi tắt cửa sổ ta gọi hàm B, v…v.
  • LINQ được xây dựng dựa trên khái niệm callback và lambda expression. Với callback, ta có thể thực hiện các thao tác như: Tìm 1 phần tử trong mảng, lọc phần tử trong mảng, sắp xếp mảng, … trở nên vô cùng đơn giản và thuận tiện. Các bạn có thể xem thêm tại bài viết Series C# hay ho: LINQ .

Viết câu trả lời

Drop Images

0 Bình luận