promise là gì

Đây là cách dùng cấu trúc promise để diễn tả lời hứa nhưng tập trung vào chủ thể hứa nhiều hơn hành động của lời hứa đó. Khi viết sang câu gián tiếp, chúng ta đều có thể sử dụng 1 trong 2 cấu trúc promise ở trên. Đây là cách dùng đơn giản nhất của cấu trúc promise khi diễn tả một lời hứa sẽ thực hiện một hành động cụ thể. Cấu trúc promise được sử dụng trong cấu trúc chuyển từ trực tiếp sang gián tiếp để diễn tả lời hứa.

promise là gì

Lưu ý – Nói chung chỉ một catch()là đủ để xử lý việc từ chối bất kỳ promise nào trong chuỗi promise, nếu nó ở cuối chuỗi. Để sử dụng tính năng này, Bạn cần đăng nhập bằng tài khoản Howkteam. Sự kiện xử lý rất tuyệt vời cho các trường hợp xử lý nhiều lần trên một đối tượng như bàn phím, chuột, form. Tuy nhiên với sự kiện thì thường ta sẽ không quan tâm đến chuyện gì sẽ xảy ra cho tới khi ta bổ sung một Listener (gửi mail). Async/await mang đến giải pháp “xinh đẹp” hơn, cho phép bạn truy xuất đến giá trị của các promises phía trước nếu cần thiết.

Ngay sau khi promise đầu tiên được giải quyết sau 1 giây, lời hứa trả lại từ Promise.race() sẽ được giải quyết mà không cần đợi promise thứ hai được giải quyết hoặc bị từ chối. Ở đây nếu promise được giải quyết, thì successCallback sẽ được gọi với giá trị được chuyển đến resolve(). Và nếu lời hứa bị từ chối, thì failureCallback được gọi với giá trị được chuyển đến reject(). Công thức Promise được dùng khi bạn muốn diễn đạt cũng như nói về 1 lời hứa, 1 lời ước hẹn cụ thể nào đó. Công thức, cách dùng, bài tập có đáp án chi tiết nhất.

Đây là dạng công thức Promise cơ bản và đơn giản nhất khi muốn nói về 1 lời hứa cho 1 hành động nào đó. Promise object đại diện cho việc hoàn thành kết quả (hoặc sự thất bại) từ một lệnh bất đồng bộ, và giá trị kết quả của lệnh đó. Lý do là vì khi trongstrict mode, biến ngữ cảnhthischỉ được xác định khi trực tiếp gọi phương thức của đối tượng đó, hoặc thông qua.bind().

Kết Hợp Cấu Trúc Promise Cùng Với Một Mệnh Đề

Tuy nhiên bạn cũng có thể sử dụng phương thức catch để bắt lỗi. Như ở ví dụ trên mình demo việc xử lý hành động load hình ảnh của trình duyệt, nếu hình ảnh load không được thì sẽ làm thao tác bổ sung hình mặc định, đây là một hành động callback. Như vậy, ta đã tránh được tình trạng callback hell khi có thể tách biệt các xử lý bất đồng bộ ra riêng cho đến khi tất cả kết quả bất đồng bộ đã có. Chờ cho tất cả các promise được xử lý, kết quả trả về là mảng chứa các object chứa trạng thái và giá trị của promise kể cả resolved hay rejected.

Việc nắm vững Promise không hề đơn giản và không phải ai cũng hiểu rõ, vì vậy với bài viết này sẽ giúp bạn có cái nhìn tổng quan về Promise trong Javascript nói chung và trong ES6 nói riêng. Sự kiện trong Javascript đã giải quyết vấn đề đa luồng, một hành động sẽ xảy ra khi một sự kiện được kích hoạt. Phương thức này nhận vào một hàm và sẽ được kích hoạt dù cho promise trước nó hoàn thành hay xảy ra lỗi. Ngoài hai kiểu chạy tuần tự và song song ở trên, chúng ta còn cóPromise.race([promise1, promise2, …]). Phương thức này nhận vào một mảng các promises và sẽ resolve/reject ngay khi một trong số các promises này hoàn thành/xảy ra lỗi.

  • Đây là cách dùng đơn giản nhất của cấu trúc promise khi diễn tả một lời hứa sẽ thực hiện một hành động cụ thể nào đó.
  • Nó đại diện cho một xử lý bất đồng bộ và chứa kết quả cũng như lỗi xảy ra từ xử lý bất đồng bộ đó.
  • Promise vừa là một danh từ mang nghĩa lời hứa, vừa là một động từ với nghĩa hứa với ai, đảm bảo điều gì đó.
  • Lưu ý – Nói chung chỉ một catch()là đủ để xử lý việc từ chối bất kỳ promise nào trong chuỗi promise, nếu nó ở cuối chuỗi.
  • Chúng không chuyển kết quả cho nhau, thay vào đó chúng được xử lý một cách độc lập.
  • Bạn hãy lưu ý rằng là to V chứ không phải là V hoặc V-ing nhé.

Bây giờ chúng ta tiếp tục sử dụng funtion loadScript để tải 1 tập tin. Toàn bộ đều hoạt động, bởi vìpromise.then sẽ trả về một promise, vì vậy chúng ta có thể chuyển tiếp đến .then tiếp theo. Promise được sinh ra như một đối tượng đặc biệt dùng cho các xử lý bất đồng bộ. Nó đại diện cho một xử lý bất đồng bộ và chứa kết quả cũng như lỗi xảy ra từ xử lý bất đồng bộ đó.

Khi Nào Dùng Cấu Trúc Promise

Mặc dù chúng ta có thể dùng async/await ở đa số các trường hợp, Promise vẫn là nền tảng cần thiết khi thực thi các tác vụ bất đồng bộ trong JavaScript. Do đó bạn nên xem xét và lựa chọn giải pháp phù hợp, tùy vào tình hình thực tế nhá. Cấu trúc promise này được sử dụng để diễn tả lời hứa với ai đó về việc gì đó. Cấu trúc promise ở dạng này vẫn mang nghĩa là diễn tả một lời hứa hẹn nhưng nhấn mạnh hơn vào chủ ngữ.

Chúng tôi sử dụng một Promise bằng cách gọi phương thức then() và catch() trên Promise. Một cách sử dụng khác của cấu trúc promise là kết hợp với danh từ để hứa hẹn ai đó về việc gì. Promise vừa là một danh từ mang nghĩa lời hứa, vừa là một động từ với nghĩa hứa với ai, đảm bảo điều gì đó. Công thức promise trong tiếng Anh được dùng khi người nói diễn tả về lời hứa, ước hẹn cụ thể của mình. Cấu trúc promise trong tiếng Anh được dùng khi người nói mong muốn được diễn tả về lời hứa, ước hẹn cụ thể của mình.

Các tác vụ bất đồng bộ có thể là gửi AJAX request, gọi hàm bên trongsetTimeout,setIntervalhoặcrequestAnimationFrame, hay thao tác với WebSocket hoặc Worker… Dưới đây là một callback hell điển hình. Theo Ehkoo, việc hiểu và sử dụng thành thạo tính liên kết là một trong những điểmQUAN TRỌNG NHẤTkhi làm việc với Promise. Khi promise lồng vào nhau từ 2 tầng trở lên thì đã đến lúc bạn phải refactor lại rồi. Đây là dạng công thức Promise nâng cao hơn một chút, diễn đạt ngữ nghĩa là hứa hẹn với ai đó cho việc gì. Với sự phát triển nhanh các tính năng mới của JavaScript khiến nhiều người đang nghiên cứu cũng khó nhớ hết những tính năng và hiểu bản chất cụ thể của nó. Câu hỏi bây giờ đặt ra là nếu ta vừa truyền callback error và vừa sử dụng catchthì thế nào?

Anh em thấy đấy promise in javascript phức tạp hơn những gì chúng ta nghĩ. Dĩ nhiên đây chỉ là mô phỏng thôi, còn thực thế thì xử lý bên trong của nó cồng kềnh hơn nhiều. Chờ tất cả các promise trong mảng resolved, kết quả của promise mới này là một mảng chứa kết quả của các promise theo đúng thứ tự. Một ví dụ khác là khi load một hình ảnh thì có sự kiện ready(), ta sẽ áp dụng sự kiện này để đổi hình mặc định nếu như hình không tồn tại. Tiếp theo then() được gọi là khi promise2 được giải quyết và trả về promise3. Vì resolve() được gọi trước nên promise sẽ được giải quyết.

  • Như vậy, ta đã tránh được tình trạng callback hell khi có thể tách biệt các xử lý bất đồng bộ ra riêng cho đến khi tất cả kết quả bất đồng bộ đã có.
  • Lại có trường hợp bạn muốn thực thi và lấy ra kết quả của nhiều promises cùng lúc.
  • Anh em thấy đấy promise in javascript phức tạp hơn những gì chúng ta nghĩ.
  • Cấu trúc Promise được sử dụng khi người nói mong muốn diễn tả về một lời hứa, một ước hẹn cụ thể trong cuộc sống.
  • Phương thức này nhận vào một hàm và sẽ được kích hoạt dù cho promise trước nó hoàn thành hay xảy ra lỗi.

Khi chạy kết quả ta có thể thấy giá trị log 8 đã thực hiện, có nghĩa khi ta tạo một object promise, thì thao tác bất đồng bộ đã được thực hiện. Và khi resolve hay reject thì kết quả của xử lý bất đồng bộ này vẫn được lưu lại trong promise. Ở đây dữ liệu được truyền cho then() phương thức là giá trị của promise đầu tiên được giải quyết. Vì vậy, hãy Promise.race() đợi một trong những promise trong mảng thành công hay thất bại và thực hiện hoặc từ chối ngay sau khi một trong những promise trong mảng được giải quyết hoặc bị từ chối.

Đối với cách dùng Promise này thì sẽ vẫn diễn đạt ngữ nghĩa hứa hẹn. Thế nhưng, dạng cấu trúc này có tính nhấn mạnh vào chủ ngữ thực hiện nhiều hơn (khi cùng chủ ngữ) hoặc được sử dụng khi 2 chủ ngữ ở câu không giống nhau. Đây là cách dùng đơn giản và phổ biến nhất của cấu trúc promise để diễn tả sự hứa hẹn về một hành động cụ thể. Đây là cách dùng đơn giản nhất của công thức promise dùng để diễn tả một lời hứa về một hành động nào đó. Đây là cách dùng đơn giản nhất của cấu trúc promise khi diễn tả một lời hứa về một hành động nào đó. Đối với các dạng bài tập về câu tường thuật trong tiếng Anh (câu trực tiếp gián tiếp) thì chúng ta thường bắt gặp Promise.

Bạn có thể đọc thêm vềPromise.prototype.finally()ở đây. Lưu ý là phương thức này hiện chỉ được hỗ trợ bởi Firefox, Chrome và Opera thôi nhé. Lại có trường hợp bạn muốn thực thi và lấy ra kết quả của nhiều promises cùng lúc.

promise là gì

Nó khác với các xử lý callback là ta có thể mang vác cái biến này đi khắp nơi trong code mà ta thấy phù hợp. Giả sử promise A kiểm tra xem có người dùng tồn tại hay không, promise B thêm người dùng mới, promise C thực thi điều gì đó bằng cách sử dụng các thông tin người dùng cấp. Nếu người dùng đã tồn tại, chúng tôi gọi trực tiếp promise C. Bây giờ chúng ta đã biết cách tạo một Promise, hãy hiểu cách sử dụng một Promise đã được tạo.

Trong trường hợp muốn chạy các promises một cách tuần tự như sơ đồ ở trên, bạn có thể dùng hàmArray.prototype.reduce. Một lỗi chúng ta hay mắc phải khi mới làm quen với Promise, đó là tạo ra “kim tự tháp” promises như thế này. Rất nhiều người mới bắt đầu mắc sai lầm khi lồng những lời hứa vào bên trong một lời promise. SuccessCallbackđược được gọi khi một promise đã được giải quyết. Nó nhận một đối số là giá trị được truyền tới resolve().

Lý do là vì khi promise chưa kịp resolve thì dòngconsole.logđã chạy rồi. Chúng ta có thể sửa bằng cách dùngPromise.all([promise1, promise2, …]). Phương thức này nhận vào một mảng các promises và chỉ resolve khi tất cả các promises này hoàn thành, hoặc reject khi một trong số chúng xảy ra lỗi.

Ở đây tôi đang tạo một lời promise bằng cách sử dụng phương thức khởi tạo Promise. Promise được giải quyết hoặc bị từ chối sau 2 giây kể từ khi tạo. Promise được giải quyết nếu randomNumber nhỏ hơn 6 và bị từ chối nếu không. ➔ Cấu trúc Promise dùng để diễn tả một lời hứa thực hiện vấn đề cụ thể. Cấu trúc promise được sử dụng để thể hiện sự hứa hẹn hoặc lời hứa về điều gì đó.

Các phương thức then() và catch() cũng có thể trả về một promise mới có thể được xử lý bằng cách xâu chuỗi then () khác vào cuối phương thức then() trước đó. Ở trên là toàn bộ kiến thức lý thuyết về cấu trúc và cách dùng Promise trong tiếng Anh. Hãy cùng Step Up thực hành một số dạng bài tập cơ bản dưới đây để ôn tập lại nha. Ở 1 vài ngữ cảnh, bạn có thể sử dụng cấu trúc Promise thứ 3. Còn ở Promise, nó làm 1 bản cam kết sẽ thực hiện trong tương lai, ta không cần phải viết xử lý then ngay lập tức mà có thể để promise object lại đến khi sau này cần mới thực hiện. Vậy Promise là một gói dùng để quản lý kết quả trả về của một hành động Asycn (bất đồng bộ) và nó vừa được bổ sung vào ngôn ngữ Javascript từ version ES6.

Promise được giải quyết bằng cách gọi resolve() và từ chối bằng cách gọi reject(). Chúng tôi tạo một Promise mới bằng cách khởi tạo hàm khởi tạo promise, nó nhận một đối số duy nhất là một hàm callback. Đối số này còn được gọi là hàm thực thi nhận hai callback là resolve và reject. Hầu hết, các bạn sẽ sử dụng những promise hơn là tạo ra chúng, nhưng điều quan trọng vẫn là bạn phải biết cách tạo ra chúng. Đây là cấu trúc dùng để hứa hẹn với ai đó về một việc nào đấy. Đáng lẽ bài viết sẽ đi thẳng vấn đề là Promise luôn nhưng mình cũng nên trình bày sơ lược chút xíu về xử lý đồng bộ.

“Tôi hứa tôi sẽ làm được điều đó” – để nói câu này bằng Tiếng Anh chúng ta có thể sử dụng cấu trúc Promisedùng diễn tả lời hứa. Cấu trúc Promise sử dụng hàng ngày trong Ngữ Pháp Tiếng Anhmục đích diễn tả những hứa hẹn, lời hứa đối với một người nào đó. Ngay sau đây là cấu trúc Promise và hướng dẫn cách sử dụng đúng cách nhất. Đây là cách dùng đơn giản nhất của cấu trúc promise khi diễn tả một lời hứa sẽ thực hiện một hành động cụ thể nào đó.

  • Để sử dụng tính năng này, Bạn cần đăng nhập bằng tài khoản Howkteam.
  • Công thức Promise được dùng khi bạn muốn diễn đạt cũng như nói về 1 lời hứa, 1 lời ước hẹn cụ thể nào đó.
  • Ở dạng này, cấu trúc promise vẫn diễn tả sự hứa hẹn của người nói về việc thực hiện một hành động nào đó nhưng có tính nhấn mạnh vào chủ ngữ thực hiện nhiều hơn.
  • Đáng lẽ bài viết sẽ đi thẳng vấn đề là Promise luôn nhưng mình cũng nên trình bày sơ lược chút xíu về xử lý đồng bộ.
  • Sẽ cung cấp đầy đủ cho các bạn về cấu trúc promise này nhé.

Promise còn hỗ trợ cho chúng ta một kỹ thuật khá hay giúp ta kết nối các promise liên tiếp lại với nhau. Vì phương thức then (ở trường hợp promise thành công) khi return giá trị thì nó sẽ tạo một promise khác bọc lại giá trị đó, ta có thể tạo nên phương thức then phía sau để kết nối tiếp. Ở dạng này, cấu trúc promise vẫn diễn tả sự hứa hẹn của người nói về việc thực hiện một hành động nào đó nhưng có tính nhấn mạnh vào chủ ngữ thực hiện nhiều hơn.

Cấu trúc Promise được sử dụng khi người nói mong muốn diễn tả về một lời hứa, một ước hẹn cụ thể trong cuộc sống. Trong một số trường hợp, ta có thể dùng cấu trúc promise thứ 3. Vậy hành đồng cắt tóc của người thứ nhất đã làm ảnh hưởng đến người thứ hai, và người thứ hai sẽ mất một khoảng thời gian chờ để đến lượt của mình (ta gọi là đồng bộ -Synchronous).

Trong bài này chúng ta sẽ tìm hiểu về Promise, một package được đưa vào từ ES6 giúp giải quyết vấn đề Callback Hell này. Đoạn mã thứ hai trả vềundefinedvì trong JavaScript nếu một hàm khôngcông khaitrả về một giá trị,undefinedmặc định sẽ được trả về (nguồn). Do đó, bạn cần lưu ý về giá trịreturnkhi làm việc với Promise. Ở đây chúng ta có hai promise trong đó một promise được giải quyết sau 1 giây và promise kia bị từ chối sau 1,5 giây. Kể từ khi promise3 bị từ chối, tiếp theo then() không được gọi thay vào đó catch() được gọi là xử lý promise3 từ chối. Hàm thực thi được thực thi ngay lập tức khi một promise được tạo.

promise là gì

Câu trả lời nó sẽ chạy hàm callback error và catche sẽ không chạy. Reject là một hàm callback xử lý cho hành động thất bại. Vì vậy, hãy Promise.all() đợi tất cả các promise thành công và thất bại nếu bất kỳ promise nào trong mảng không thành công. Khi promise1 được giải quyết, then() phương thức được gọi là phương thức trả về promise2. Bây giờ chúng ta đã biết Promise là gì và thuật ngữ Promise, hãy quay trở lại khía cạnh thực tế của Promise. Ta thấy ví dụ này rõ ràng và dễ hiểu hơn hẳn ví dụ sử dụng callback ở trước đó.

  • Ở đây chúng ta có hai promise trong đó một promise được giải quyết sau 1 giây và promise kia bị từ chối sau 1,5 giây.
  • Câu hỏi bây giờ đặt ra là nếu ta vừa truyền callback error và vừa sử dụng catchthì thế nào?
  • Nếu người dùng đã tồn tại, chúng tôi gọi trực tiếp promise C.
  • Sự kiện xử lý rất tuyệt vời cho các trường hợp xử lý nhiều lần trên một đối tượng như bàn phím, chuột, form.
  • Phương thức này nhận vào một mảng các promises và sẽ resolve/reject ngay khi một trong số các promises này hoàn thành/xảy ra lỗi.

Cấu trúc Promise được dùng để diễn tả lời hứa, lời ước hẹn cụ thể của người nói đến một người khác. Thenable không có gì to tác mà nó là một phương thức ghi nhận kết quả của trạng thái (thành công hoặc thất bại) mà ta khai báo ở Reject và Resolve. Tham số thứ nhất xử lý cho Resolve và tham số thứ 2 xử lý cho Reject.

promise là gì

Giải pháp “ngây thơ” sẽ là dùng vòng lặp, hoặc.forEach. Ở đây chúng tôi có promise hứa trong đó một lời hứa được giải quyết sau 2 giây và lời hứa kia bị từ chối sau 1,5 giây. Mặc dù điều này hoạt động tốt, đây được coi là một phong cách kém sang và làm cho code của chúng tôi khó đọc. Nếu bạn có một chuỗi các promise cần giải quyết, tốt hơn là bạn nên xâu chuỗi các promise một cách lần lượt hơn là lồng chúng vào bên trong một chuỗi khác.

Resolve là một hàm callback xử lý cho hành động thành công. Hiện giờ, bạn đã có thể sử dụng Promise và async/await ở tất cả các trình duyệt hiện đại (trừ IE11 ra nhé, bạn vẫn cần polyfill cho nó). Phương thức này chỉ làcú pháp bọc đường của.thenmà thôi. Chúng tôi sử dụng chuỗi lời hứa khi chúng tôi muốn giải quyết các promise theo một trình tự. Bạn hãy lưu ý rằng là to V chứ không phải là V hoặc V-ing nhé.

promise là gì

Trên đây là những kiến thức ngữ pháp cơ bản về cấu trúc Promise trong tiếng Anh. Hy vọng rằng các kiến thức mà Wow English đã cung cấp ở trên có thể giúp bạn trong quá trình học tập và sử dụng tiếng Anh. Cấu trúc wish – Tổng hợp đầy đủ công thức, cách dùng, những lưu ý khi sử dụng. Bạn có thể thấy Promise và async/await không hoàn toàn thay thế mà hỗ trợ lẫn nhau.

Nhân viên của tôi hứa rằng bản báo cáo sẽ hoàn tất trong 3 ngày tới. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Cách tạo số ngẫu nhiên trong Javascript Hướng dẫn cách tạo một số ngẫu nhiên … John đã hứa với sếp của anh ta rằng lợi nhuận sẽ tăng khoảng 30% trong năm nay.

Việc gọi reject() sau đó sẽ không ảnh hưởng đến trạng thái Promise. Cấu trúc Promise này nâng cao hơn một chút, nghĩa là hứa hẹn ai đó về việc gì. Với đoạn code này chạy lên bạn sẽ nhận giá trị là Success!. Hàmrejecttrong.thenchỉ có thể chụp được lỗi từ những.then()phía trước nó, mà không thể bắt được lỗi xảy ra trong hàmresolvecùng cấp. Trọn bộ từ vựng tiếng Anh về nghề nghiệp đầy đủ và hay nhấtTừ vựng tiếng Anh về nghề nghiệp là chủ đề quen thuộc và gần gũi với cuộc…

Một handler (trình xử lí) được sử dụng trong .then có thể tạo và trả về một promise. Những gì chúng ta thấy ở đây chỉ là một số xử lý cho một promise. Chúng không chuyển kết quả cho nhau, thay vào đó chúng được xử lý một cách độc lập. Tất nhiên là promise đầu tiên thành công thì sẽ trả về kết quả ngay lập tức. Tất nhiên là khi có lỗi thì ngay lập tức promise chuyển sang trạng thái rejected và cũng như trả về luôn kết quả, nhưng hãy nhớ là các promise khác vẫn được thực hiện nhưng kết quả bị bỏ qua. Promise là mộtcơ chếtrong JavaScript giúp bạn thực thi các tác vụ bất đồng bộ mà không rơi vàocallback hellhaypyramid of doom, là tình trạng các hàm callback lồng vào nhau ở quá nhiều tầng.

Khi viết và chuyển đổi, các bạn đều còn có thể dùng 1 trong 2 câu cấu trúc Promise. Đây là cấu trúc dùng để diễn tả về một lời hứa thực hiện bằng một hành động cụ thể.. Như vậy ạ, Tôi Yêu Tiếng Anh đã tổng hợp cho bạn toàn bộ kiến thức về cấu trúc promise trong tiếng Anh. Nếu bạn có câu hỏi gì về ngữ pháp tiếng Anh thì hãy bình luận bên dưới, mình sẽ giải đáp cho bạn sớm nhất. Ở dạng này, cấu trúc promise vẫn mang nghĩa hứa hẹn tuy nhiên có tính nhấn mạnh vào chủ ngữ thực hiện nhiều hơn (khi cùng chủ ngữ) hoặc được dùng khi hai chủ ngữ trong câu là khác nhau. Promise có thể hiểu là 1 biến chứa kết quả cuộc 1 lần thực hiện bất đồng bộ.

Được giới thiệu trong ES8, async/await là mộtcơ chếgiúp bạn thực hiện các thao tác bất đồng bộ một cáchtuần tựhơn. Async/await vẫn sử dụng Promise ở bên dưới nhưng mã nguồn của bạn (theo một cách nào đó) sẽ trong sáng và dễ theo dõi. Hãy cùng luyện tập qua một số bài tập về cấu trúc promise vừa học ở trên để tổng hợp lại kiến thức của mình nhé. Cấu trúc promise kết hợp với danh từ diễn tả việc hứa với ai điều gì đó.

Top