Ngày phát hành: 17 tháng 1 năm 2025
Việc thực hiện công việc không đồng bộ trên web có thể gặp nhiều thách thức và nhiều việc cần làm trên web đều liên quan đến tính không đồng bộ. Cho dù đó là các lệnh gọi fetch
hay các thao tác không đồng bộ khác, trình duyệt sẽ giúp bạn thực hiện công việc đó dễ dàng hơn khi các phương thức tích hợp sẵn cung cấp khả năng xử lý lỗi mạnh mẽ. Tính năng này đã được cung cấp cho Promises bằng cách sử dụng các phương thức then
, catch
và finally
.
Tuy nhiên, cách bạn thiết kế cơ sở mã của ứng dụng phải linh hoạt và không phải mọi việc bạn làm trong ứng dụng đều phải không đồng bộ. Đôi khi, bạn có thể muốn xử lý kết quả của lệnh gọi lại theo cách đơn giản hơn nếu không quan trọng liệu lệnh gọi lại mà bạn truyền đến Promise
có đồng bộ hay không. Promise.try
là một phương thức hiện có trong tất cả các công cụ trình duyệt chính giúp đơn giản hoá việc này cho nhà phát triển, tức là phương thức này hiện có trong Baseline New.
Promise.try
là gì và hoạt động như thế nào?
Promise.try
là một phương thức thuận tiện giúp việc xử lý lỗi cho các hàm gọi lại đồng bộ trở nên dễ dàng hơn so với khi bạn sử dụng Promise.resolve
:
// If the callback is synchronous and it throws
// an exception, the error won't be caught here:
new Promise(resolve => resolve(callback());
// But it will be here:
Promise.try(callback);
Sau đó, sử dụng các phương thức then
, catch
và finally
để xử lý việc phân giải hoặc từ chối Promise
:
Promise.try(callback)
.then(result => console.log(result))
.catch(error => console.log(error))
.finally(() => console.log("All settled."));
Nếu hàm callback của bạn có đối số thì sao? Bạn có thể xử lý vấn đề này bằng một trong hai cách:
// This creates an extra closure, but works:
Promise.try(() => callback(param1, param2));
// This doesn't create an extra closure, and still works:
Promise.try(callback, param1, param2);
Lợi ích chính của việc sử dụng Promise.try
là cho phép bạn sử dụng Promise một cách đồng nhất, bất kể lệnh gọi lại mà bạn truyền vào đó có đồng bộ hay không đồng bộ. Điều này có nghĩa là trong trường hợp một hàm tiện ích truyền lệnh gọi lại đến Promise
được sử dụng rộng rãi trong mã của bạn, việc sử dụng Promise.try
sẽ đảm bảo xử lý lỗi thích hợp cho mọi lệnh gọi lại mà bạn truyền đến hàm đó. Để biết thêm thông tin và các vấn đề hoặc trường hợp sử dụng tiềm ẩn khác, hãy tham khảo tài liệu MDN về Promise.try
.
Kết luận
Giờ đây, khi Promise.try
đã đạt đến Mức cơ sở mới có sẵn, bạn có thể sử dụng Promise.try
trong tất cả các công cụ trình duyệt chính. Theo thời gian, bạn có thể sử dụng Promise.try
trong các ứng dụng web với sự tự tin ngày càng tăng rằng đó sẽ là một phần ổn định và có khả năng tương tác của nền tảng web.