Hàm gọi lại trong JavaScript

Tram Ho

1. Lời nói đầu:

Trong bài viết này mình sẽ cùng các bạn tìm hiểu về callback function trong javascript, tại sao chúng ta lên sử dụng callback function và với hàng loạt các hàm hỗ trợ mới, và đặc biệt là Arrow Function thì liệu callback function có bị lỗi thời. Và một số lựa chọn mới sẽ tốt hơn callback function trong một số trường hợp

2. Callback Function là gì:

Theo định nghĩa

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.


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, bởi thế hàm sẽ mang nhiều tính chất giống các kiểu dữ liệu thông thường như Number string, array. Do vậy chúng ta có thể thực hiện những việc như: Lữu trữ hàm trong một biến, truyền một hàm vào như một tham số, khai báo một hàm bên trong một hàm, return hàm như một giá trị trả về.

Chúng ta cùng đi vào một ví dụ nhỏ để hiểu hơn nhé:
Mình sẽ có một bài toán khi thấy mình chơi game, đám bạn mình sẽ auto khen, ok bắt đầu bài toán nào.

Theo ví dụ trên thì khenNgoi() là một hàm Callback function còn chsGame gọi là Higher-order function. Như các bạn thấy thì Callback function là hàm được truyền vào một hàm cha khác như một tham số đầu vào, sau đó sẽ được gọi kích hoạt bên trong hàm cha này. Higher-order function: là hàm có hoạt động dựa trên 1 hàm khác, tức là: nó có thể nhận 1 hàm làm tham số đầu vào(hàm cha trong khái niệm callback function chính là một higher-order function), hoặc sẽ return ra 1 hàm khác. Một trong 2 điều kiện đó xảy ra thì được gọi là hàm higher-order.

3. Callback Function hoạt động như thế nà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 dạng 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 tự thực thi. Mà chỉ được thực thi khi function chứa nó gọi đến callback function. Đây cũng là một trong các tính chất dùng để phát triển tính bất đồng bộ trong javascript.

Một ví dụ nhỏ để các bạn thấy cách thức hoạt động của callback function: Mình có bài toán cộng tổng 2 số a và b như sau

Viết thường không sử dụng callback:

Sử dụng callback: trong trường hợp này mình sử dụng callback để trả ra cho người đang sử dụng hàm này

Khi gọi hàm add, thứ ta cần quan tâm không phải là callback vì nó chỉ là hàm trả ra thôi, chúng ta chỉ cần nó trả ra err thì là lỗi gì nếu không thì trả ra kết quả.

Hoặc có thể viết ngắn gọn như sau:

Chúng ta sẽ ngầm hiểu CallBack này sẽ gồm 2 tham số là error và result như sau:

Chúng ta có hoàn toàn có thể viết lại như sau:

4. Kết luận

Đọc tới đây chắc các bạn cũng đã hình dung được callback function và một số hàm cơ bản trong callback function là gì cũng như cách sử dụng, hoạt động của nó rồi đúng không ạ 😃. Thường thì callback function thường được dùng để thực hiện các tác vụ bất đồng bộ hoặc cho những tác vụ event listeners/handlers. Nhưng hiện nay các tác vụ bất đồng bộ sẽ không còn sử dụng callback nữa vì nó sẽ gập phải một số vấn đề về callback hell, mình sẽ nói dõ vấn đề này hơn ở bài Promise mong các bạn ủng hộ.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo