Dưới đây là một ví dụ về đoạn mã JavaScript sử dụng Promise để đảm bảo rằng ba tiến trình được thực thi cùng lúc và chỉ khi cả ba đã hoàn thành thì mới thực hiện một tác vụ sau đó:
// Hàm giả lập một công việc bất kỳ mất một khoảng thời gian để hoàn thành
function doSomeWork(workName, time) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(`${workName} đã hoàn thành sau ${time} ms`);
resolve();
}, time);
});
}
// Sử dụng Promise.all để đảm bảo cả 3 tiến trình cùng hoàn thành
Promise.all([
doSomeWork("Tiến trình 1", 2000),
doSomeWork("Tiến trình 2", 1500),
doSomeWork("Tiến trình 3", 1000)
])
.then(() => {
console.log("Tất cả các tiến trình đã hoàn thành.");
// Thêm tác vụ sau khi cả 3 tiến trình đã hoàn thành ở đây
})
.catch((error) => {
console.error("Có lỗi xảy ra: ", error);
});Trong ví dụ này, chúng ta sử dụng Promise.all để đợi cho đến khi tất cả các Promise trong mảng đã được giải quyết thành công (hoàn thành). Sau khi tất cả ba tiến trình đã hoàn thành, chúng ta có thể thực hiện các tác vụ khác bằng cách sử dụng .then().
Bạn có thể giải thích kỹ hơn về Promise
Tất nhiên! Promises là một khái niệm quan trọng trong JavaScript được sử dụng để quản lý xử lý bất đồng bộ (asynchronous) và làm cho mã trở nên dễ đọc và dễ quản lý hơn khi làm việc với các tác vụ không đồng bộ như tải tệp từ máy chủ, gửi yêu cầu HTTP, hoặc thực hiện các tác vụ chạy trong nền.
Một Promise trong JavaScript là một đối tượng biểu thị một giá trị chưa có sẵn vào thời điểm tạo ra, nhưng sẽ có sẵn trong tương lai. Promise có hai trạng thái chính:
- Pending (Chờ): Trạng thái ban đầu khi Promise được tạo ra. Promise đang chờ để hoàn thành (thành công hoặc thất bại).
- Fulfilled (Thành công): Trạng thái khi Promise hoàn thành thành công và trả về kết quả mong đợi.
- Rejected (Thất bại): Trạng thái khi Promise thất bại và trả về một lỗi.
Một Promise có thể chuyển từ trạng thái “chờ” sang trạng thái “thành công” hoặc “thất bại” bằng cách sử dụng các hàm resolve và reject. Cụ thể, resolve được gọi khi tác vụ hoàn thành thành công, và reject được gọi khi có lỗi.
Dưới đây là một ví dụ đơn giản về cách tạo và sử dụng một Promise:
// Tạo một Promise đơn giản
const myPromise = new Promise((resolve, reject) => {
// Thực hiện một tác vụ bất đồng bộ, ví dụ: setTimeout
setTimeout(() => {
const randomNumber = Math.random();
if (randomNumber > 0.5) {
// Thành công
resolve(randomNumber);
} else {
// Thất bại
reject("Lỗi: Số ngẫu nhiên nhỏ hơn 0.5");
}
}, 1000);
});
// Sử dụng Promise
myPromise
.then((result) => {
console.log("Thành công:", result);
})
.catch((error) => {
console.error("Thất bại:", error);
});Trong ví dụ này, myPromise sẽ hoàn thành sau khoảng 1 giây và có thể thành công hoặc thất bại dựa trên giá trị của randomNumber. .then() được sử dụng để xử lý kết quả thành công, và .catch() để xử lý lỗi.
👋 Xin chào,
99,99% nội dung trên website này là nhờ hỏi ChatGPT, rồi mình biên tập lại để dễ hiểu và dùng lâu dài. Một vài bài tự viết, còn lại là “làm việc nhóm với AI” 😄
Mình lưu tại đây để tra cứu, học tập và chia sẻ với bạn bè. Nếu bạn tìm được gì hữu ích, cứ đọc thoải mái – miễn phí, không quảng cáo.
📱 Mình cũng có vài app cá nhân:
QuestionBank – Ôn thi vào 10 (iOS, Android)
TypingTest by QuestionBank (iOS, Android)
Cảm ơn bạn đã ghé qua!