Thế nào là một Callback Function trong JavaScript
Đến với thế giới JavaScript, ta sẽ bắt gặp đủ loại function. Chắc hẳn bạn đã nghe tới Arrow Function, còn nếu chưa biết tới thì bạn có thể tham khao theo đường link này. Bên cạnh Arrow Function , JavaScript còn một loại function mà ta thường hay gặp, đó là Callback Function . Nghe tên có vẻ quen ...
Đến với thế giới JavaScript, ta sẽ bắt gặp đủ loại function. Chắc hẳn bạn đã nghe tới Arrow Function, còn nếu chưa biết tới thì bạn có thể tham khao theo đường link này. Bên cạnh Arrow Function, JavaScript còn một loại function mà ta thường hay gặp, đó là Callback Function. Nghe tên có vẻ quen quen đúng không, hoặc có thể mình đã dùng rùi mà chưa để ý kĩ tới nó.
Trước tiên, ta cần biết rằng một function trong JavaScript thực chất là một first-class object, nghĩa là function hay object hay array đều được lưu trữ như nhau. Function có thể được lưu trữ dưới dạng biến trong một Object hay một Array, và được truyền đi dưới dạng một tham số hoặc được gọi tới bằng một function khác. Đây cũng là bản chất của Callback Function trong JavaScript. Ta có thể nói răng CallBack Function là một kĩ thuật được ứng dụng rộng rãi nhất trong Functional Programming mà ta có thể bắt gặp ở bất kì đoạn code JavaScript nào. Nhưng được dùng rộng rãi thế vậy, đôi lúc ta vẫn hoài nghi về cách vận hành cũng như ứng dụng của Callback Function.
Callback Function hay được gọi với tên khác là Higher-order Function, là một function được truyền vào một function (gọi là F1) khác dưới dạng tham số, và được gọi trong function F1 đó.
Đây một ví dụ sơ đăng nhất của callback function :
function notify(){ console.log("Hello world"); } function taskOne(callback){ // Gọi notify function callback(); } // Truyền function notify dưới dạng biến vào taskOne taskOne(notify);
Theo ví dụ như trên, ta khai báo hai function tên là notify() và taskOne(). Khi ta gọi thực thi taskOne(), phía trong function lại gọi tới một function là callback(). Như ta để ý thì callback cũng là tên tham số của function taskOne, mà ở dòng thực thi ta truyền vào là notify.
Hay đây là một ví dụ thường gặp ở bất kì project nào sử dụng jQuery
$("#btn_1").click(function() { alert("Btn 1 Clicked"); });
Như đã thấy, ta truyền một function dưới dạng tham số vào phương thức click. Khi click dc thực thi sẽ gọi tới function mà ta khai báo.
Ta có thể truyền function như là một biến và return nó trong một function khác. Khi ta truyền callback function như là một tham số tới một function khác, ta chỉ truyền định nghĩa. Nó sẽ được thực thi khi ta truyền cả function dưới dang tham số
Và chúng ta đã có định nghĩa của function callback dưới dang tham số, ta có thể thực thi bất kì lúc nào trong function chứa nó.
Chú ý: Function Callback không được thi thức thi. Nó có tên là "Callback" mà nhỉ