07/09/2018, 13:57

Giải thích 3 khái niệm khó trong Javascript cho phụ huynh

Closures Closures trong JS không dễ để hiểu nhưng nó lại thường xuyên được hỏi trong các buổi phỏng vấn. Thường được gọi Lexical scoping hay Static scoping, closures là một cơ chế trừu tượng cho phép bạn chia cắt các mối quan ngại một cách gọn gàng. Một closure ...

Closures

Closures trong JS không dễ để hiểu nhưng nó lại thường xuyên được hỏi trong các buổi phỏng vấn.

Thường được gọi Lexical scoping hay Static scoping, closures là một cơ chế trừu tượng cho phép bạn chia cắt các mối quan ngại một cách gọn gàng.

Một closure là một hàm bên trong có quyền truy cập vào các biến của hàm bên ngoài –  scope chain.

Kết quả sẽ là:

“a: 2”

“Global a: 3”

Callbacks

Callback là một hàm được chuyển tới hàm khác làm tham số để chờ được gọi để thực thi nhiệm vụ. Hàm được truyền này sẽ được call (hoặc được executed) trong một hàm khác.

Một ví dụ đơn giản là:

Chúng ta có một hàm gọi là executor, nó sẽ thực hiện mọi thứ như tham số

Chúng ta call executor bằng cách chuyển một hàm làm tham số

Kết quả sẽ là: “Result after calling your function 2”

Promises

Promise đại diện cho kết quả cuối cùng của một operation không đồng bộ (asynchronous operation).

Declaring một promise

Promise có thể thuộc một trong 3 trạng thái sau:

Pending→ kết quả của promise vẫn chưa được xác định, bởi vì operation không đồng bộ sẽ tạo ra kết quả của nó chưa hoàn thành.

Fulfilled → operation không đồng bộ đã hoàn thành và promise có giá trị.

Rejected → operation không đồng bộ bị fail, và promise sẽ không bao giờ được đáp ứng. Trong trạng thái bị rejected, promise sẽ có đưa ra lý do cho biết tại sao operation failed.

Tiêu thụ một promise

API chính cho một promise là phương thức then của nó, vốn đăng ký callback để nhận giá trị cuối cùng hoặc lý do tại sao promise không thể được thực hiện.

Chúng ta cũng có thể kiểm tra bất kỳ lỗi nào trong quá trình execute promise:

Techtalk via Dev.to

0