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

