100 lạng vàng là bao nhiêu tiền tampines

Hỏi Đáp Thế nào So Sánh Khác biệt

Async/await và promise khác biệt nhau như thế nào

16 giờ trước

Promise Là Gì Tất Tần Tật Về Promise Và Async/Await

Là Gì 25 Tháng Chín, 2021 Là Gì

Promise Là Gì Tất Tần Tật Về Promise Và Async/Await

Dòng đời 9x chắc ai cũng biết bài hit nổi tiếng của Ưng Hoàng Phúc Hứa thật nhiều, thất hứa thì cũng thật nhiều? Chưa biết có phải vì quá đình đám không mà ở phiên bản ES6[ES2015], khái niệm lời hứa[promise] đã đc đưa vào ECMAScript?

Ở bài viết này các bạn cùng thăm dò về Promise. Tại sao các bạn phải áp dụng promise? Và nó hữu dụng ích gì về lập trình bất nhất quán [asynchronous] trong JavaScript? Bạn sẽ hiểu đc chúng là gì, phương thức cần sử dụng and nó đc áp dụng để thay thế thế cho callbacks như vậy nào?

Promise là gì?

promise là một đối tượng người dùng sẽ trả về một giá thành trong tương lai.

Bài Viết: Promise là gì

Các bạn cùng thăm dò về một ví dụ thực tiễn để hiểu rõ hơn khái niệm về promise.

Dù cho bạn đang FA thì cũng hãy hình dung rằng tuần sau sẽ là sinh nhật bạn nữ của bạn. Tất nhiên bạn sẽ dành cho cô ấy một gói quà đặt biệt, and không gì thích hợp hơn là một chiếc bánh sinh nhật. Vâng, bạn đề ra một lời hứa mua bánh sinh nhật.

Trong JavaScript, một promise cũng như vậy, nó đc tạo được như sau:

// duthahoBuysCake là một lời hứaconst promise = duthahoBuysCake[bánh sinh nhật][Đừng lo lắng nếu bạn chưa hiểu tạo được hàm duthahoBuysCake như vậy nào, các bạn sẽ thăm dò dưới].

Lúc đề ra lời hứa, các bạn chưa triển khai nó, lúc đó lời hứa đang ở trạng thái chờ, hay pending trong Javascript. Bạn cũng có thể console.log một đối tượng người dùng Promise lúc tạo được để kiểm chứng.

Bạn thuở đầu lên kế hoạch, trước tiên là nhịn ăn sáng để dành tiền, tới ngày đó thì ra tiệm bánh để chọn màu, chọn kiểuvân vân mây mây

Nếu đến đúng ngày, bạn có đủ tiền, ra tiệm có đúng loại bánh bạn chọn, bạn quyết định mua nó, bây giờ lời hứa ở trạng thái đã triển khai, hay resolved trong Javascript. Khi promise ở trạng thái resolved, một hành động .then đc gọi [quẩy thôi]:

duthahoBuysCake[bánh sinh nhật] .then[quẩy như dự định] // 123zooo!Nhưng cuộc sống không lúc nào cũng màu hồng như vậy, bạn thích chơi to cho sinh nhật tình nhân and làm vài con lô, thế là bay sạch cmn tiền. Cuối cùng không mua đc bánh. Hiên giờ bạn đã thất hứa, lời hứa không triển khai đc. Trong Javascript, các bạn gọi Promise đang ở trạng thái rejected.

Khi đó, bạn triển khai một kế hoạch dự trữ, một hành động .catch đc gọi.

duthahoBuysCake[bánh sinh nhật] .then[quẩy như dự định] .catch[kế hoạch dự trữ]Trong Javascript thì các bạn thường áp dụng Promise để get hoặc cập nhật dữ liệu. Khi promise ở trạng thái thành công resolved, các bạn xử lý dự liệu với data trả về. Ngược lại khi promise thất bại rejected, các bạn xử lý lỗi:

Xem Ngay: Tyrosinase Là Gì - Cơ Chế Dưỡng Trắng Da Ức Chế Melanin Là Gì

getSomethingWithPromise[] .then[data => {/* xử lý data */}] .catch[err => {/* xử lý lỗi */}]Đến đây thì bạn đã hiểu promise là gì, những trạng thái của nó and phương thức nó vận động. Hãy cùng thăm dò phương thức tạo được nó nào.

Tạo một promise như vậy nào?

Tạo một promise khá dễ chơi, chỉ cần tạo mới đối tượng người dùng Promise new Promise. Và hàm constructor của Promise nhận 2 tham số là 2 hàm resolve and reject.

const promise = new Promise[[resolve, reject] => { /* Do something here */}]Nếu hàm resolve đc gọi, trạng thái của promise sẽ là thành công and hành động .then đc gọi. Tham số bạn truyền vào hàm resolve để được chuyển đến then:

const promise = new Promise[[resolve, reject] => { // Note: resolve chỉ được phép truyền đúng 1 param return resolve[27]}]// Tham số từ resolve để được chuyển đến then.promise.then[number => console.log[number]] // 27Ngược lại nếu hàm reject đc gọi, trạng thái của promise sẽ là thất bại and hành động catch đc gọi. Cũng tương tự như resolved tham số đc truyền vào reject để được chuyển đến catch.

const promise = new Promise[[resolve, reject] => { // Note: reject chỉ được phép truyền đúng 1 param return reject[lỗi]}]promise.catch[err => console.log[err]] // lỗiBắt đầu code thôi nào, trước tiên tạo một promise cho duthahoBuysCake ở phí a trên:

const duthahoBuysCake = cakeType => { return new Promise[[resolve, reject] => { // Do something here }]}Tiếp theo, lên kế hoạch cho 1 tuần để triển khai lời hứa. Các bạn sẽ áp dụng hàm setTimeout để giả sử cho việc mong chờ and lên kế hoạch:

const duthahoBuysCake = cakeType => { return new Promise[[resolve, reject] => { setTimeout[[]=> { // mua hay không mua nói 1 lời }, 1000] }]}Note: ở đây setTimeout cho 1000ms [1 giây] thôi chớ chờ 1 tuần thì tình nhân nó kiếm thèn khác cmnr.

Nếu sau 1 tuần bạn có đủ tiền để mua bánh, promise sẽ gọi resolved and trả dữ liệu bánh sinh nhật về cho then.

Ngược lại, bạn không đủ tiền để mua bánh, promise sẽ gọi reject and trả dữ liệu không đủ tiền về cho catch.

Xem Ngay: Vpc Là Gì Tìm Hiểu Về Amazon

let money = 1000const duthahoBuysCake = cakeType => { return new Promise[[resolve, reject] => { setTimeout[[]=> { if [money > 1000] { resolve[cakeType] } else { reject[không đủ tiền] } }, 1000] }]}Nếu bạn thử console.log với promise bên dưới đây, kết quả của nó là trạng thái pending.

const promise = duthahoBuysCake[bánh sinh nhật]console.log[promise]

Giờ bạn hãy thử cần sử dụng then and cactch vào promise trên, bạn sẽ cảm thấy kết quả là bánh sinh nhật hoặc không đủ tiền lệ thuộc vào số tiền bạn có.

Tình huống then:

money = 1001const promiseSuccess = duthahoBuysCake[bánh sinh nhật] .then[cake => console.log[cake]] .catch[nocake => console.log[nocake]]

Tình huống catch:

Hiên giờ thì bạn có cảm thấy không khó để tạo một promise phải không?

Xem Ngay: Ngoại Tâm Thu Là Gì

Nhiệm vụ tiếp theo của các bạn là vấn đáp khúc mắc Tại sao promise đc áp dụng để thay thế thế callback trong lập trình bất nhất quán [asynchronous JavaScript]?

Promises vs. Callbacks

Coder hầu hết là các thèn làm biếng, tôi cũng như vậy and chắc bạn cũng thế. Đồ gì nhanh, gọn, nhẹ thì chọn vậy thôi :]. Sau đó là 3 lý do mà promise đc áp dụng nhiều hơn là callback:

Ít code lồng [nested] hơn Đọc code dễ hiểu hơn Xử lý lỗi dễ dàng hơn với catch

Nói nhiều làm gì, hãy đi vào ví dụ để so sánh.

Bài toán ở đó là bạn đang là chủ 1 showroom bán đồ trực tuyến, nghề đang hot. Khi ai đó đặt đặt đơn hàng, bạn sẽ đánh dấu thông tin của họ vào database. Cuối cùng gửi email cho họ về lô hàng trả tiền:

Quý khách đặt đặt đơn hàng Đánh dấu thông tin quý khách Gửi mail

Các bạn lần lượt đi qua từng bước. Trước tiên, khi khách đặt đặt đơn hàng, frontend sẽ gửi 1 request đặt đơn hàng đến backend kèm theo thông tin của quý khách, bình thường ở đó là post request.

Ví dụ bên dưới đây đc viết bằng Express NodeJS framework. Nếu bạn không biết cũng không sao, chỉ cần chăm sóc nó đc viết bằng Javascript:

// API áp dụng để frontend gửi request đặt đơn hàng đến backend.app.post[/buy-thing, [req, res] => { const customer = req.body toàn thân // lấy thông tin quý khách}]Ở đây bạn thích lấy dữ liệu quý khách, nếu thành công, bạn đánh dấu thông tin vào database, and sẽ văng ra exception nếu có lỗi.

Ví dụ về cần sử dụng callback:

// Callback based codeapp.post[/buy-thing, [req, res] => { const customer = req.body toàn thân // lấy dữ liệu quý khách getCustumerInfo[customer, [err, info] => { if [err] throw err // lưu thông tin xuống database }]}]Ví dụ về cần sử dụng promise:

// Promised based codeapp.post[/buy-thing, [req, res] => { const customer = req.body toàn thân getCustomerInfo[customer] .then[info] .catch[err => throw err]}]Bước đầu tuần là lưu dữ liệu quý khách xuống database, sau khi lưu thành công, bạn sẽ gửi email cho quý khách, ngược lại, văng ra exception nếu có lỗi.

Ví dụ về cần sử dụng callback:

// Callback based codeapp.post[/buy-thing, [req, res] => { const customer = req.body toàn thân getCustomerInfo[customer, [err, info] => { if [err] throw err // lưu thông tin xuống database addToDatabase[info, [err, document] => { if [err] throw err // gửi email }] }]}]Ví dụ về cần sử dụng promise:

// Promised based codeapp.post[/buy-thing, [req, res] => { const customer = req.body toàn thân getCustomerInfo[customer] .then[info => addToDatabase[info]] .then[/* gửi email */] .catch[err => throw err]}]Bước cuối cùng, khi bạn gửi email cho quý khách thành công, bạn sẽ hiển thị thông báo cho người sử dụng, ngược lại, văng ra exception nếu gửi email thất bại:

Ví dụ về cần sử dụng callback:

// Callback based codeapp.post[/buy-thing, [req, res] => { const customer = req.body toàn thân getCustomerInfo[customer, [err, info] => { if [err] throw err // lưu thông tin xuống database addToDatabase[info, [err, document] => { if [err] throw err // gửi email sendEmail[customer, [err, result] => { if [err] throw err // thông báo thành công. res.send[success!] }] }] }]}]Ví dụ về cần sử dụng promise:

Xem Ngay: Besides Là Gì - Beside Trong Tiếng Anh

app.post[/buy-thing, [req, res] => { const customer = req.body toàn thân getCustomerInfo[customer] .then[info => addToDatabase[info]] .then[_ => sendEmail[customer] ] .then[result => res.send[success!]]] .catch[err => throw err]}]Có lẽ rằng qua ví dụ trên thì các bạn đã tưởng tượng đc các điểm mạnh của việc áp dụng promise đối với callback? Code ngắn gọn, flow dễ hiểu, xử lý lỗi dễ dàng hơn, and quan trọng là né phải callback hell khi áp dụng callback.

Xử lý nhiều lời hứa cùng lúc?

Một điểm cộng nữa của promise là các bạn có thể triển khai nhiều promise cùng 1 lúc mà những vận động của chúng ko ảnh hưởng gì cùng với nhau, nhưng kết quả của các lời hứa đó thiết yếu cho 1 vận động sau cùng.

Để làm đc điều này, các bạn cần sử dụng hàm Promise.all, tham số truyền vào là 1 mảng những lời hứa [promise] cần triển khai. Khi đó, tham số của then đó chính là 1 mảng chứa những kết quả từ những promise.

Hãy hình dung bạn thích ăn bữa tối sau khi nấu đủ 3 món: cơm, canh cá. Những vận động này triển khai cùng lúc and không lệ thuộc lẫn nhau, thế nhưng bạn cần phải chờ cho cục bộ nấu xong thì bạn mới ăn tối đc:

const nauComPromise = nauCom[]const nauCanhPromise = nauCanh[]const khoCaPromise = khoCa[]const anToi = Promise.all[] .then[ => { console.log[`${com} tuyệt vời!`] console.log[`${canh} ngon quá!`] console.log[`${ca} bị cháy`] }][Note: ở đây còn 1 hàm Promise.race, nhưng hiếm khi đc cần sử dụng, bạn cũng có thể tìm hiểu thêm tại đây.

Cuối cùng, vì promise là công năng mới của ES6, nên không phải cục bộ browser đều giúp sức?

Browser giúp sức Promise

Không sao, tin rất tốt là promise đã đc giúp sức phần đông trên cục bộ trình duyệt!

Nếu bạn còn xài đồ củ chuối IE11 hoặc nhỏ dại hơn, Promise Polyfill là một sự chọn lựa thay thế!

Túm lại

Bạn đã đc học cục bộ các gì về promise trong bài viết này, nó cứu các bạn viết code 1 phương thức ngắn gọn and dễ hiểu hơn trong lập trình bất nhất quán and khỏi đau đầu với callback hell.

Mặc dù trong bài viết các bạn nên cần sử dụng promise để thay thế thế cho callback nhưng trong 1 số điều kiện rõ ràng, callback nắm giữ 1 vai trò quan trọng. Bởi vậy mình sẽ viết 1 bài về callback trong thời điểm tới. Mong mọi người đón đọc.

Xem Ngay: As A Result Là Gì

Nếu bạn có khúc mắc nào hoặc ý kiến đóng ghóp, bình luận dưới! Nhớ là sharing dùm mình nhé.

Thể Loại: San sẻ Kiến Thức Cộng Đồng

Bài Viết: Promise Là Gì Tất Tần Tật Về Promise Và Async/Await

Thể Loại: LÀ GÌ

Nguồn Blog là gì: //hethongbokhoe.com Promise Là Gì Tất Tần Tật Về Promise Và Async/Await

Related

  • Pulse Là Gì
  • Gantt Chart Là Gì Cách Lập Sơ Đồ Gantt
  • đồng Vị Là Gì 5 Dạng Bài Tập Về đồng Vị
  • Fiscal Year Là Gì Ngày Bắt Đầu Năm Tài Chính
  • Báo Cáo Lưu Chuyển Tiền Tệ Là Gì, Lưu Chuyển Tiền Tệ Là Gì
  • Tranche Là Gì Tranche / Một Phần Của Công Cụ Tài Chính
  • Gaps Là Gì Gap Trong Tiếng Tiếng Việt
  • Gpo Là Gì Tìm Hiểu Group Policy Object Và Các Ví Dụ
  • Căn Hộ Penthouse Là Gì, Khái Niệm Cơ Bản Về Căn Hộ Penthouse
  • Nghĩa Vụ Quân Sự Là Gì, Nghĩa Vụ Quân Sự

Video liên quan

Bài Viết Liên Quan

Đi bộ 4000 bước giảm bao nhiêu calo

Bạn đốt cháy bao nhiêu calo khi đi bộ?Một câu hỏi thường xuyên mọi người đặt ra là đi bộ đốt cháy bao nhiêu calo ? Câu trả lời là nó phụ thuộc vào cân ...

10 3 giờ bằng bao nhiêu giờ bao nhiêu phút

Hiện nay, mình nhận được một số câu hỏi được gửi về trang nhiều nhất là 1/10 giờ & 3/10 giờ bằng bao nhiêu phút ? Có vẻ như việc tính toán từ ...

100g bánh bông lan trứng muối bao nhiêu calo

Chắc chắn bạn sẽ phải cân nhắc lại kế hoạch giảm cân của mình sau khi biết 1 cái bánh bông lan bao nhiêu calo hay ăn bánh bông lan có mập khôngngay trong bài ...

Hỏi có bao nhiêu số có 3 chữ số mà có chứa chữ số 1?

Có bao nhiêu số chứa ít nhất một chữ số 1 trong các số tự nhiên :a] có ba chữ số.b] từ 1 đến 999. ...

Thức an sau khi được đưa vào miệng được biến đổi như thế nào trong ống tiêu hóa

Trang chủ / Cơ chế hoạt động của hệ tiêu hóaCơ chế hoạt động của hệ tiêu hóaTháng Mười 5, 2020No CommentsNếu hiểu được cơ chế hoạt động của hệ ...

Oxy già công nghiệp mua ở đâu tampines

H2O2 Công Nghiệp Là Chất Gì Tác Dụng Giá Bao Nhiêu Mua Ở Đâu admin April 4, 2020 Tin Tức Comments Off on H2O2 Công Nghiệp Là Chất Gì Tác Dụng Giá Bao Nhiêu Mua ...

Bình ắc quy xe máy Vision giá bao nhiêu

Bình acquy đóng vai trò quan trọng trong hệ thống xe máy. Nó có nhiệm vụ tích trữ năng lượng và phóng điện cho các bộ phận như đề, còi, đèn Sau một thời ...

2.50 USD bằng bao nhiêu tiền Việt Nam

Tỷ giá ngoại tệ hôm nay 2.5: Đồng USD giao dịch ảm đạm trong bối cảnhNgân hàng Trung ương châu Âu tuyên bố giữ nguyên chính sách tiền tệ của mình tại ...

Bánh quy mè dừa joly bao nhiêu calo

Sau những giờ làm việc mệt mỏi, bận rội với công việc vào những giây phút thư giãn giải lao với chiếc bánh thơm ngon bổ dưỡng thì thật tuyệt vời biết ...

Máy hàn 300A tương đương bao nhiêu KW

Máy hàn que điện tử 300A - 220V Protech - Thiết Bị Thành PhátMáy hàn que điện tử 300A - 220V Protech chính hãng - Giá cả cạnh tranh - giao hàng nhanh - thanh toán khi ...

100g chả cá thác lác bao nhiêu calo

Cá là một trong những món ăn chính thơm ngon, cung cấp năng lượng và dưỡng chất cần thiết cho cơ thểqua các bữa cơm hằng ngày. Chúng ta cần phải biết hàm ...

Răng bình thường có nên niềng không

TTO - Nhiều người cứ thấy răng miệng bị hô, móm là đi niềng răng vì nghĩ sau khi niềng răng sẽ đẹp. ...

Trời mưa sấm sét có nên dụng điện thoại trong nhà

Lý do buộc bạn không dùng điện thoại ngoài trời lúc mưa dông 09/06/2017 15:10 GMT+7 ...

Có thể quan sát ở đâu trên trang tính để biết được địa chỉ của ô chứa con trỏ chuột

Câu 1: Trang tính gồm có: A. Các ô và các hàng. B. Các cột và các hàng. C. Bảng chọn và thanh công thức. D. Thanh tiêu đề và thanh công thức. CQuestionCâu 1: Trang ...

Tại sao đàn ông lại thích làm chuyện ấy

[Bật mí] Đàn ông thích gì khi quan hệ? Cách nhận biết họ yêu mình thật.Dược sĩ LộcCập nhật lần cuốiThứ Hai, 05/10/2020 10:59 UTC+74.4 / 5 [ 5 bình chọn ...

Tại sao không có nút chia sẻ trên Facebook

Không cho người khác chia sẻ bài viết của mình trên Facebook là cách để giúp bạn giữ thông tin và video độc quyền của mình khi đăng tải lên Facebok. Vây làm ...

Thế nào là phát triển ngữ âm cho trẻ mẫu giáo

1. Tầm quan trọng của việc phát triển ngôn ngữ cho trẻ mầm non. Phát triển ngôn ngữ cho trẻ là một nhiệm vụ quan trọng trong chương trình giáo dục mầm ...

Bình xăng Exciter 150 đi được bao nhiêu km

Toàn bộ danh mục Góc chuyên gia Sức khỏe Tình dục an ...

Mua iPhone 12 ở đâu rẻ nhất Việt Nam

Nội Dung ChínhTop các quốc gia sở hữu mức giábán iPhone 12 rẻ nhất Thế GiớiMỹ quốc gia có giá bán iPhone 12 rẻ nhấtNhật Bản đất nước thứ hai có mức ...

Bé 1 tuổi uống bao nhiêu ml sữa tươi

Mình có viết trong topic "bé chán cháo", nhưng để các mẹ dễ nhìn, nên mở topic mới. Không biết các bác sĩ ở nhà mình có khuyến cáo không, nhưng mình cứ đưa ...

Chủ Đề

Mẹo Hay Cách Công Nghệ Hỏi Đáp Bao nhiêu Máy Là gì Facebook Máy tính Món Ngon Top List Iphone Top Laptop Bánh Màn hình File Học Tốt Hướng dẫn Samsung Nấu Google Tại sao Cryto Khỏe Đẹp Giá Ngôn ngữ Thịt Thế nào Chia sẻ Tiếng anh Bao lâu Ở đâu Học Macbook Nghĩa là gì Bàn phím Son Android Có nên Làm sao Review Sách Xây Đựng Game Khoa Học Nhà Dịch Ipad Danh sách

Video liên quan

Chủ Đề