L a y o f f s

Promise, Async/Await, và Closure: Hiểu Rõ Để Code Hiệu Quả Hơn

JavaScript là một ngôn ngữ lập trình mạnh mẽ với nhiều tính năng hiện đại. Trong đó, PromiseAsync/Await, và Closure là những khái niệm quan trọng giúp bạn viết code hiệu quả và dễ bảo trì hơn.


1. Promise: Xử Lý Bất Đồng Bộ

  • Khái niệm: Promise là một đối tượng đại diện cho một tác vụ bất đồng bộ, có thể thành công (resolve) hoặc thất bại (reject).

  • Cú pháp:

     

     
    const myPromise = new Promise((resolve, reject) => {
      if (success) {
        resolve("Thành công!");
      } else {
        reject("Thất bại!");
      }
    });
    
    myPromise
      .then(result => console.log(result))
      .catch(error => console.log(error));

 

  • Ứng dụng: Xử lý các tác vụ như gọi API, đọc file, hoặc thao tác với database.


2. Async/Await: Cú Pháp Hiện Đại Cho Bất Đồng Bộ

  • Khái niệm: Async/Await là cú pháp giúp viết code bất đồng bộ một cách đồng bộ, dễ đọc và dễ hiểu hơn.

  • Cú pháp:

     
    async function fetchData() {
      try {
        const response = await fetch('https://api.example.com/data');
        const data = await response.json();
        console.log(data);
      } catch (error) {
        console.log(error);
      }
    }
  • Ưu điểm: Giảm thiểu callback hell và làm code dễ đọc hơn.


3. Closure: Hàm Với Phạm Vi Biến Riêng

  • Khái niệm: Closure là một hàm có thể truy cập và ghi nhớ phạm vi biến của hàm cha, ngay cả khi hàm cha đã thực thi xong.

  • Ví dụ:

     
    function outerFunction() {
      let count = 0;
      return function innerFunction() {
        count++;
        console.log(count);
      };
    }
    
    const counter = outerFunction();
    counter(); // 1
    counter(); // 2
  • Ứng dụng: Tạo các hàm đóng gói dữ liệu, quản lý trạng thái, hoặc tạo các hàm factory.


Kết Luận

  • Promise và Async/Await giúp xử lý bất đồng bộ một cách hiệu quả và dễ đọc.

  • Closure giúp quản lý phạm vi biến và tạo các hàm linh hoạt hơn.

  • Hiểu rõ và áp dụng đúng các khái niệm này sẽ giúp bạn viết code JavaScript chuyên nghiệp và hiệu quả hơn.