Promise JavaScript là gì? Cách thức hoạt động của Promise JavaScript

JavaScript có khả năng thực hiện các hướng dẫn đồng bộ (hoặc không đồng bộ). Có một vài tính năng không đồng bộ trong JavaScript và một trong số đó là Promises. Khi làm việc với Promise, bạn phải áp dụng một cú pháp đặc biệt để việc viết các hướng dẫn không đồng bộ trở nên có tổ chức hơn. Cùng Techie tìm hiểu Promise JavaScript là gì và cách dùng các cú pháp dễ hiểu nhất để tạo Promise JavaScript ngay trong bài viết dưới đây!

Promise javascript là gì?

Promise là một đối tượng trong JavaScript, là một cơ chế để xử lý các tác vụ bất đồng bộ. Nó có thể được hiểu như một hợp đồng giữa người gọi và người được gọi. Người gọi (caller) đưa ra promise rằng sẽ thực hiện một tác vụ bất đồng bộ và sẽ xử lý kết quả trả về. Trong khi đó, người được gọi (callee) thực hiện tác vụ và trả về kết quả cho người gọi. Người gọi sau đó sẽ xử lý kết quả trả về theo ý muốn của mình.

Tại sao lại cần sử dụng promise trong javascript?

Trong JavaScript, promise được sử dụng để xử lý các hoạt động không đồng bộ. Khi xử lý một số hoạt động không đồng bộ, trước khi có promise, lệnh callback được sử dụng nhưng chúng bị hạn chế về chức năng  dẫn đến mã không thể quản lý được. Bên cạnh đó, việc quản lý nhiều lệnh callback cùng lúc là điều khó khăn đối với bất kỳ người dùng nào.

Promise là lựa chọn tốt nhất để xử lý các tác vụ không đồng bộ theo cách đơn giản nhất. Chúng có thể dễ dàng xử lý nhiều thao tác không đồng bộ và xử lý lỗi tốt hơn so với các lệnh recall và event. Nói cách khác, promise là một giải pháp thay thế tuyệt vời để quản lý nhiều callback cùng lúc, tránh tình trạng callback không mong muốn.

Promise cung cấp cho người dùng khả năng đọc mã cao hơn và hiệu quả hơn, đặc biệt nếu mã được sử dụng để triển khai một số hoạt động không đồng bộ.

Các trạng thái của promise javascript là gì?

Promise JavaScript có thể ở một trong bốn trạng thái. Những trạng thái này cho thấy sự tiến triển của promise:

  • Fulfilled: Các hành động được thực hiện để đáp lại promise đã được “thực hiện”, kết quả mong muốn của promise đã đạt được và dữ liệu/hành động cần thiết đã được thực hiện thành công.
  • Rejected: Hành động liên quan đến promise không được thực hiện, nó không thể thực hiện hành động/tìm nạp dữ liệu được yêu cầu.
  • Pending: Promise vẫn đang chờ xử lý, tức là nó chưa được thực hiện hoặc bị từ chối và chưa được giải quyết.
  • Resolve: Promise đã được thực hiện hoặc bị từ chối. (Đạt đến trạng thái cuối cùng).
trạng thái promise javascript là
Các trạng thái của Promise JavaScript

Ví dụ về Promise JavaScript

Ví dụ về Promise Resolved

var promise = new Promise(function(resolve, reject) {
resolve('Codedamn');
})

promise
.then(function(successMessage) {
//success handler function is invoked
console.log(successMessage);
}, function(errorMessage) {
console.log(errorMessage);
})

catch()

Khi promise bị từ chối hoặc xảy ra lỗi trong quá trình thực thi, hàm Catch() sẽ được dùng. Nó được sử dụng làm trình xử lý lỗi nếu có nguy cơ gặp lỗi ở bất kỳ giai đoạn nào.

Phương thức Catch() nhận vào một tham số là một hàm. Lỗi và từ chối promise được xử lý bởi chức năng này.

Ví dụ về Promise Rejected

var promise = new Promise(function(resolve, reject) {
reject('Promise Rejected')
})

promise
.then(function(successMessage) {
console.log(successMessage);
})
.catch(function(errorMessage) {
//error handler function is invoked
console.log(errorMessage);
});

Cú pháp tạo ra Promise JavaScript là gì?

Chúng ta có thể tạo ra một Promise bằng cách sử dụng từ khóa new Promise và truyền vào một hàm executor. Hàm executor này nhận vào hai tham số là resolve và reject.

Ví dụ:
const promise = new Promise((resolve, reject) => {
// Code xử lý bất đồng bộ
if (/* Thành công */) {
resolve(result);
} else {
reject(error);
}
}); 

Trong hàm executor, chúng ta thực hiện các tác vụ bất đồng bộ và gọi resolve khi tác vụ hoàn thành thành công, hoặc gọi reject khi gặp lỗi.

Thực hiện Promise JavaScript là gì?

Để thực hiện một Promise, chúng ta có thể sử dụng các phương thức then và catch.
Phương thức then được gọi khi Promise đã hoàn thành và nhận vào một hàm callback để xử lý kết quả của Promise. Phương thức catch được gọi khi Promise gặp lỗi và nhận vào một hàm callback để xử lý lỗi.
Ví dụ:
promise
.then(result => {
// Xử lý kết quả thành công
})
.catch(error => {
// Xử lý lỗi
});

Sai lầm khi thực hiện Promise trong JavaScript

  • Không sử dụng phương thức catch để xử lý lỗi: Khi thực hiện một Promise, chúng ta nên luôn sử dụng phương thức catch để xử lý lỗi. Nếu không sử dụng catch, các lỗi trong Promise có thể bị bỏ qua và không được xử lý.
  • Quên trả về một Promise: Khi thực hiện một hàm bất đồng bộ, chúng ta nên luôn trả về một Promise để đảm bảo rằng kết quả của hàm đó có thể được xử lý bằng phương thức then và catch.
  • Xử lý lỗi không chính xác: Khi xử lý lỗi trong Promise, chúng ta nên luôn kiểm tra kiểu dữ liệu của lỗi để xác định cách xử lý phù hợp.

Lợi ích khi sử dụng Promise JavaScript là gì?

Sử dụng Promise trong JavaScript mang lại nhiều lợi ích, bao gồm:

  • Xử lý các tác vụ bất đồng bộ dễ dàng: Điều này rất hữu ích trong việc làm việc với các hoạt động như gọi API, đọc/ghi dữ liệu từ cơ sở dữ liệu, hoặc thực hiện các tác vụ mạng.
  • Tránh callback hell: Sử dụng các phương thức then() và catch() để tạo một luồng xử lý tuyến tính, giúp mã trở nên dễ đọc hơn.
  • Xử lý kết quả thành công và thất bại: Có thể sử dụng phương thức then() để xử lý kết quả thành công và phương thức catch() để xử lý kết quả thất bại. Điều này giúp dễ dàng kiểm soát luồng xử lý và xử lý các trường hợp ngoại lệ.
  • Xử lý nhiều Promise song song: Các phương thức như Promise.all() và Promise.race() để xử lý nhiều Promise song song. Ví dụ, Promise.all() cho phép chờ đợi cho tất cả các Promise hoàn thành trước khi tiếp tục xử lý. Trong khi đó, Promise.race() hỗ trợ chờ đợi cho Promise đầu tiên hoàn thành và bỏ qua các Promise còn lại.

Kết luận

Tóm lại, Promise JavaScript là gì? Promise là một cơ chế quan trọng trong JavaScript để làm việc với các tác vụ bất đồng bộ, giúp quản lý và xử lý các hoạt động không đồng bộ một cách dễ dàng và tránh rơi vào tình trạng callback hell. Đây là một công cụ mạnh mẽ giúp chúng ta viết code JavaScript một cách rõ ràng, dễ hiểu và an toàn hơn. Đặc biệt quan trọng để nâng cao hiệu quả và kỹ năng lập trình đối với các lập trình viên.

>> Xem thêm: Java Core là gì? Sự khác biệt giữa Java và Java Core

Khám phá thêm
Temu, một ứng dụng mua sắm Trung Quốc, đang gây chấn động trên internet với những sản phẩm rất rẻ....
“Chúng ta đang sống trong thế giới VUCA” – Câu nói này đã diễn tả đúng tình trạng thế giới...
Trong bài viết này, Techie sẽ giới thiệu đến bạn bản chất của tính năng constraints và auto-layout figma, cũng...
Theo một “nguồn tin mật” cho hay, Ghibli chính thức công bố trailer phần tiếp theo của tựa phim Vùng...
Thuật toán Dijkstra là một công cụ quan trọng trong lý thuyết đồ thị và tối ưu hóa. Với khả...
Nếu như các ứng dụng hẹn hò như Tinder, Okcupid, Facebook Dating vẫn chưa đem đến cho bạn một anh...
“Nói Việt Nam không có văn hóa riêng do sao chép từ Trung Quốc chẳng khác gì nói Nhật Bản...
Cảm biến sinh học (Biosensor) đã đánh dấu một thành tựu quan trọng trong cuộc chiến chống đại dịch COVID-19 khi...