Promise trong JavaScript

12:06 27/04/2025

Trong JavaScript, Promise là một đối tượng đại diện cho kết quả của một thao tác bất đồng bộ (asynchronous operation). Nó có thể thành công hoặc thất bại tại một thời điểm nào đó trong tương lai.

Các trạng thái của Promise

Promise có 3 trạng thái chính:

  • Pending (Chờ xử lý): Trạng thái ban đầu, chưa có kết quả.
  • Fulfilled (Thành công): Khi thao tác bất đồng bộ hoàn tất thành công.
  • Rejected (Thất bại): Khi thao tác bất đồng bộ gặp lỗi.

Cú pháp tạo một Promise

const myPromise = new Promise((resolve, reject) => {

    let success = true; // Giả sử một điều kiện thành công

    if (success) {

        resolve(“Thành công!”); // Kết quả khi thành công

    } else {

        reject(“Thất bại!”); // Kết quả khi thất bại

    }

});

Sử dụng .then(), .catch() và .finally()

myPromise

    .then(result => {

        console.log(“Kết quả:”, result); // Khi Promise thành công

    })

    .catch(error => {

        console.log(“Lỗi:”, error); // Khi Promise thất bại

    })

    .finally(() => {

        console.log(“Hoàn tất!”); // Dù thành công hay thất bại, vẫn chạy

    });

Ví dụ thực tế: Lấy dữ liệu từ API giả lập

function fetchData() {

    return new Promise((resolve, reject) => {

        setTimeout(() => {

            let success = true; 

            if (success) {

                resolve({ data: “Dữ liệu từ API” });

            } else {

                reject(“Lỗi khi lấy dữ liệu”);

            }

        }, 2000);

    });

}

fetchData()

    .then(response => console.log(“Dữ liệu:”, response.data))

    .catch(error => console.log(“Lỗi:”, error));

Sử dụng async/await với Promise

Thay vì dùng .then() và .catch(), ta có thể sử dụng async/await để viết mã dễ đọc hơn:

async function getData() {

    try {

        let response = await fetchData();

        console.log(“Dữ liệu:”, response.data);

    } catch (error) {

        console.log(“Lỗi:”, error);

    }

}

getData();

Tóm tắt

  • Promise giúp xử lý bất đồng bộ dễ dàng hơn.
  • Có 3 trạng thái: pending, fulfilled, rejected.
  • Sử dụng .then(), .catch(), .finally() để xử lý kết quả.
  • Có thể dùng async/await để viết mã dễ hiểu hơn.

Giảng viên Võ Văn Mỹ
Bộ môn Công nghệ thông tin
FPT Polytechnic TP HCM

Hỗ trợ tư vấn và giải đáp thông tin tuyển sinh FPT Polytechnic

Cùng chuyên mục

Đăng ký nhập học tại FPT Polytechnic 2026

  • Max. file size: 50 MB.
  • Max. file size: 50 MB.
  • Max. file size: 50 MB.