Promise là một trong trong “thất trụ” của ngữ điệu Javascript, mà lại bạn cần phải cầm cố hết sức vững vàng. Nếu chúng ta chưa biết 7 định nghĩa đặc trưng kia thì mời bạn đọc bài viết này: 7 định nghĩa cơ phiên bản của Javascript.

Bạn đang xem: Promise javascript là gì

Việc sử dụng Promise để giải quyết và xử lý vụ việc callbaông chồng hell chỉ là 1 trong tinh tế. Promise còn có tương đối nhiều chức năng hữu ích không giống nữa.

Để bạn gồm một cái quan sát toàn vẹn hơn về Promise, bài viết này bản thân vẫn chia sẻ tất cả phần đông kỹ năng cần thiết duy nhất, lý giải Promise trong Javascript.

*


Nội dung chủ yếu của bài xích viết

#Tại sao lại áp dụng promise? Promise vào javascript sử dụng có tác dụng gì?

#Promise vào Javascript là gì?

Trước không còn, bản thân vẫn kể lại tư tưởng promise là gì để những bạn có thể đọc được bản chất. Theo tư tưởng ở trong nhà vạc hành:

Promise là 1 trong những đối tượng người dùng được thực hiện mang đến tính tân oán bất nhất quán. Một promise đại diện thay mặt cho một các bước hay 1 tác vụ không thể dứt ngay được. Trong tương lai, promise sẽ trả về quý hiếm hoặc là đã được giải quyết (resolve) hay những ko (reject).

Định nghĩa thì có vẻ cực nhọc phát âm vậy thôi. Chứ thực tế, hoàn toàn có thể promise đúng như tên thường gọi của nó: Lời hứa. Tức là một trong lời hứa rất có thể tiến hành (resolve) hoặc thất hẹn (reject).

Để mình rước một ví dụ về Promise Javascript: Hãy quay trở về tuổi thơ kinh hoàng của chính mình. Một hôm đẹp ttách, tía bảo: “Nếu nhỏ ngoan, bố hứa đã thiết lập cho một nhỏ robot cực kỳ khổng lồ đẩy đà vào tuần tới”.

Nếu cđọc theo nghệ thuật, thì phía trên chính là một promise. Và promise này có thể bao gồm 3 trạng thái:

Pending: Hiện lời hứa hẹn vẫn đã là hẹn suông. Không biết gồm thành thực tại tốt không?Fulfilled: Bố chúng ta Cảm Xúc vui và cài cho mình một nhỏ robot thiệt.Rejected: Rất nuối tiếc, tía tđuổi nhỏ đề với lời hứa hẹn cơ sẽ thành khẩu ca gió bay.

#Lập trình bất đồng hóa là gì?

Như định nghĩa của promise, thì quan niệm promise được hình thành nhằm giải quyết và xử lý bài bác toán bất đồng điệu.

Vậy mã bất đồng nhất là gì?

Để phát âm khái niệm này, bản thân đã xoay ngược lại vấn đề: mã đồng nhất là gì!

Lập trình đồng điệu Tức là bạn gồm loạt các câu lệnh, block lệnh… Các câu lệnh này sẽ tiến hành thực hiện theo lần lượt, từ trên xuống bên dưới theo như đúng thứ từ chúng ta viết code. Điều này Tức là câu lệnh sau phải hóng câu lệnh trước dứt.

Như vậy ngược cùng với mã đồng hóa đó là mã bất nhất quán. Đơn giản vậy thôi!

#Các tâm trạng của promise Javascript

Cái này bản thân nói lại vào ví dụ ngơi nghỉ trên thôi. Tại một thời điểm, promise rất có thể bao gồm một trong 3 trạng thái: Pending, Fulfilled, Rejected.

*

Cú pháp sử dụng promise chính thống như sau:

var promise = new Promise (function a(resolve, reject) if(// task complete) resolve(value); else reject(new Error()); );

#Cách áp dụng Promise vào Javascript

Để dễ nắm bắt và thực tiễn, bản thân vẫn viết code minh họa mang đến promise sử dụng ví dụ sinh hoạt đầu bài viết.

let isDadHappy = false;// Định nghĩa một promiselet willILetNewToy = new Promise ((resolve, reject) => if(isDadHappy) resolve(toy); // Fulfilled else reject("Bố trượt lô, yêu cầu ktìm mua đồ gia dụng đùa luôn"); )// Cách sử dụng promise trênlet askDad = ()=> willILetNewToy .then(fulfilled => console.log("Mình cảm nhận một mặt hàng nghịch tự bố"); ) .catch(reject => console.log("Chả gồm đồ vật chơi làm sao cả."); )Cũng đơn giản dễ dàng đề xuất không?

#Tại sao lại áp dụng promise? Promise vào javascript cần sử dụng làm gì?

Trước khi bao gồm tư tưởng promise, họ được hiểu callbaông chồng. Callback là một trong những function sẽ tiến hành thực hiện sau đó 1 function tiến hành hoàn thành (chính vì vậy bắt đầu mang tên là callback).

Ủa! Nếu vậy thì promise cũng là callbaông chồng thôi cơ mà, có khác gì nhau đâu.

Hồi mình new tò mò về promise cũng có thể có cân nhắc tương tự như những điều đó. Vậy promise tất cả điểm gì giỏi ho hơn callbaông chồng chứ?

Sau khi tham khảo không hề ít tư liệu, bản thân tạm bợ thấy promise bao gồm vài ba điểm mạnh như:

Promise hỗ trợ “chaining”Promise hỗ trợ bắt lỗi dễ dàng rộng callbackXử lý bất đồng hóa xuất sắc hơn

1. Promise hỗ chợ “chaining”

Có một điểm đặc biệt của promise đó là hàm then(). Giá trị trả về của hàm .then() lại là một trong những promise. Do vậy, chúng ta có thể áp dụng promise nhằm điện thoại tư vấn tiếp tục nhiều hàm bất đồng điệu.

Xem thêm: Rapper Đinh Tiến Đạt Là Ai, Tiểu Sử Ca Sĩ Rapper Đinh Tiến Đạt

// Dùng callbackxin_mẹ_mua_xe(function(xe) chở_gái_đi_chơi(xe cộ, function(gái) chở_gái_vào_hotel(khách sạn, function(z) // Làm gì không có bất kì ai biết ); ););// Dùng promise, code gọn dịu dễ đọcxin_mẹ_mua_xe .then(chở_gái_đi_chơi) .then(chở_gái_vào_hotel) .then(function() /*Làm gì không một ai biết*/ );Nhìn đoạn code bên trên, bạn có thấy code trong sạch rộng đối với cách cần sử dụng callbachồng không?

2. Bắt lỗi vào Promise

Hàm .catch() vào promise cũng là một cách tiến hành hoàn toàn như thể với .then(). Tuy nhiên, nó chỉ được dùng khi hàm reject() được Hotline. Tức là nó chỉ cần sử dụng Lúc bao gồm lỗi xẩy ra.

ví dụ như nhé:

aPromise.catch(doThisWhenItRain);// hoàn toàn tương tự vớiaPromise.then(null, doThisWhenItRain);Hai biện pháp viết bên trên là trọn vẹn kiểu như nhau về logic. Chỉ khác biệt là viết theo cách 1 thì nó rõ nghĩa hơn thôi.

Điều này còn có nghĩa hàm .catch() cũng hoàn toàn có thể bắt lỗi liên trả hoặc song song y như hàm .then()

Quay lại đoạn code “xin chị em sở hữu xe”, chỉ việc 1 trong 3 hàm bị lỗi là promise đã đưa thanh lịch tinh thần reject. Lúc này hàm catch sẽ được điện thoại tư vấn.

// Khi một function bị lỗi, promise bị reject (thất hứa)function chở_gái_vào_hotel() return Promise((response, reject) => reject("Xin lỗi hôm nay em đèn đỏ"); );xin_mẹ_mua_xe .then(chở_gái_đi_chơi) .then(chở_gái_vào_hotel) .then(function() /*Làm gì đấy, ai biết*/ ) .catch(function(err) console.log(err); //"Xin lỗi hôm nay em đèn đỏ" console.log("xui vl"); );Dường như, Promise còn làm giải quyết một hạn chế cơ phiên bản của callback hell (ngoài Việc chú ý code đọc dễ dàng hơn), chính là được cho phép bắt được toàn bộ nhiều loại lỗi, tự đa số lỗi throw Error cho tới lỗi cú pháp lập trình.

Vấn đề này cực kỳ cần thiết mang lại mã nguồn của doanh nghiệp, tránh bị lọt lỗi.

3. Promises.all()

Trong một số trường đúng theo, bạn có nhu cầu tiến hành cùng đem kết quả của khá nhiều promise cùng một thời điểm.

Giải pháp đơn giản dễ dàng tốt nhất mà các bạn nghĩ cho tới bây giờ là dùng một vòng lặp, chuyên chú qua toàn bộ các promise.

const userIds = <1, 2, 3, 4>// api.getUser() là hàm trả về promiseconst users = <>for (let id of userIds) api.getUser(id).then(user => (<...users, user>))console.log(users) // Kết trái in ra là 1 trong mảng rỗng: <>Tại sao lại như vậy?

Lý vì chưng dễ dàng và đơn giản là do mã chạy bất đồng bộ. khi hàm getUser() còn chưa kịp dứt thì hàm console.log() đã chạy rồi.

Để giải quyết và xử lý sự việc này, bọn họ tất cả một phương án toàn vẹn, chính là sử dụng hàm static Promise.all().

Pmùi hương thức Promise.all() dấn vào một mảng các promises, với sẽ chỉ resolve lúc còn chỉ Khi toàn bộ những promise đang xong.

*

Code thì đơn giản như này thôi:

const userIds = <1, 2, 3, 4>Promise.all(usersIds.map(api.getUser)) .then(function(arrayOfResults) const = arrayOfResults )

#Tạm kết

Bởi vậy là bọn họ sẽ hoàn thành vấn đề tò mò và biết phương pháp sử dụng promise vào Javascript. Đây là một trong những chiến thuật đặc biệt nhằm các bạn thực thi những tác vụ bất đồng bộ vào Javascript.

Gần trên đây, trường đoản cú phiên bản ES7, tín đồ ta còn knhì sinh ra một quan niệm bắt đầu chính là async/await, tương tự như Promise tuy nhiên có rất nhiều ưu điểm không chỉ có vậy.

Bài viết sau, nếu gồm thời hạn bản thân đang viết riêng rẽ về async/await, cũng khá độc đáo.

Các bạn nhớ cỗ vũ bản thân nhé, và liên tiếp đón phát âm những bài viết tiếp theo sau của series: Javascript cơ bạn dạng nhé.

Xem tiếp các bài bác trong SeriesPhần trước: Định nghĩa hàm Javascript – 3 giải pháp cơ bạn dạng nhấtPhần kế tiếp: Object Prototype Javascript – Công nuốm cung ứng OOP. cho JS
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *