Khái niệm, định nghĩa Callback là gì?

Callback được cài cắm vào các function, có tác dụng mấu chốt trong việc báo cáo kết quả về cho ông chủ.

Callback là điệp viên nằm vùng.

Nói một cách đơn giản: Gọi lại là một function sẽ được thực thi sau khi một function khác đã được thực thi xong – do đó nó có tên là callback(gọi lại).

Trong lập trình máy tính, callback là một đoạn code chạy được (thường là một hàm A) được sử dụng như tham số truyền vào của hàm B nào đó. Hàm A được gọi ngay lập tức hoặc trễ một chút sau khi hàm B được gọi. Các ngôn ngữ lập trình khác nhau hỗ trợ callback theo các cách khác nhau, thường được triển khai dưới dạng chương trình con, hàm nặc danh, chuỗi lệnh hoặc con trỏ hàm.

Thiết kế

Có hai loại callback: đồng bộ (blocking callback) và không đồng bộ (asynchronous callback). Trong khi callback đồng bộ được gọi trước khi hàm trả về (trong ví dụ ngôn ngữ lập trình C bên dưới, hàm callback đồng bộ ở đây là hàm main), callback không đồng bộ có thể được gọi sau khi hàm trả về. Callback không đồng bộ thường được dùng trong các thao tác vào / ra hoặc trong việc xử lý sự kiện (event), và được gọi bằng lệnh ngắt hoặc từ các tiểu trình (thread). Callback đồng bộ thường không được sử dụng cho việc đồng bộ dữ liệu giữ liệu giữa các thread.

Callback được dùng nhiều trong các chương trình có sử dụng giao diện cửa sổ. Trong trường hợp này, chương trình X cung cấp (1 tham chiếu tới) hàm callback Y của nó cho hệ điều hành và để cho hệ điều hành gọi hàm Y này, từ đó  chương trình X có thể bắt và xử lý sự kiện click chuột hoặc ấn phím….(do hệ điều hành tạo ra)  bằng hàm Y. Vấn đề được quan tâm ở đây là quyền hạn thực hiện và tính bảo mật. Vì hàm Y của chương trình X được gọi bởi hệ điều hành, Y không nên có cùng quyền hạn với các hàm khác của hệ thống.