Bài này biên về Promise, khá tinh vi, ví như chưa biết đến những chúng ta cũng có thể in ra dẫn vào để vào toilet, mổi lần vào đó thì nắm lên phát âm giết mổ thời hạn. Mình vẫn làm cùng thành công, độc nhất là hầu như hôm táo bị cắn bón. Có Khi đọc nhập trung khu thừa chui ngược vào. Không biết liệu có phải là hiện tượng lạ phản phác quy chân ko nữa. ahihi.

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

*

Ghi chú:

Nếu thương hiệu function là dạng giờ mẻo, thì bản thân đang viết camelCase, vd: doSomething()Nếu tên function là giờ đồng hồ việt ko vệt, để đọc dễ bản thân đang viết underscore, vd: dung_khoc_ma_vui_cuoi_len()Các các bạn code kiểu dáng gì thì code, đặc biệt là đồng điệu, sử dụng 1 style thôi, chớ nlỗi mình !

Bắt đầu khoác lác thôi:

Tờ giấy ghi nợ là Promise.

Ai cũng từng 1 lần cho bạn mượn chi phí, tất cả đứa hứa đã trả (pending), có đứa trả (fulfilled), với cũng có thể có đứa một đi không quay trở lại (reject).

Đây cũng 3 tâm lý của Promise.

Lúc còn là một tờ giấy nợ, pending.Lúc dc trả chi phí, Promise dc resolve, đó là tâm trạng fulfilled trong truyền thuyết. Chúng ta cũng đều có kết quả trả về là số tiền thay trên tay, ôi hồ hết vật dụng tưởng đã hết Khi quay lại bắt đầu thiệt kỳ diệu làm sao, tía ngươi thề ko bao giờ mang đến mượn tiền nữa.Lúc bị quịt, Promise bị reject, đấy là trạng thái sau cùng trước khi chúng ta lao ra quán nhậu để chia ly 1 cuộc tình. cũng có thể là tình cảm, Hay là tình bạn.Lúc nào dùng Promise.

khi 1 function đang kẹt tuy vậy hứa hẹn sẽ trả chi phí mang đến họ vào 1 tương lai xa. Nhưng bọn họ lại yêu cầu dùng số tiền đó trong 1 function khác. Lúc đấy Promise sẽ vào vai trò là quý hiếm họ buộc phải, để bạn có thể gán nợ ngay, mà lại ko yêu cầu chờ thằng tê trả chi phí.

Hiện nay đồng đội cứ nghĩ về Promise là 1 trong tờ giấy lộn, tuy vậy gồm chức năng thật, là bằng chứng (proxy) mang lại viên chi phí nợ tất cả nguy cơ mất 99% cơ.

tra_tien_em_anh_oi() // trả về 1 Promise. .then(function(tien) // bạn có thể làm cho gì đấy cùng với số tiền này ngay chớp nhoáng // ơ làm gì trên đây return nhau_an_mung(tien); ) .catch(function(ly_do_quit) console.log(ly_do_quit); )tra_tien_em_anh_oi() sẽ ko phun ra xu như thế nào, nhưng mà chỉ trả về tờ giấy nợ Promise. Tạm thời chưa kể đến phương pháp sinh sản. Anh em chú ý thằng .then và .catch đấy là 2 method của Promise.prototype, chỉ gọi dc khi new Promise lên.

Nếu chưa chắc chắn prototype là gì thì bạn bè xem thêm bài bác biên này http://alokapidakaldim.com/posts/prototype-la-khi-gi-

.then

Con mặt hàng này dc Gọi Lúc Promise resolve, tất yếu Khi đấy chúng ta đã mang dc chi phí, và làm cái gi cùng với số tiền sẽ là tuỳ chúng ta.

Muốn .then nhiều lần cũng dc, Lúc đấy Promise đang triển khai các function trong .then theo thiết bị từ bỏ. Tụi mẻo điện thoại tư vấn vụ này là Chaining. Đây là lý do nhiều ng mê say Promise, vì nó góp họ tổ chức cùng code khôn cùng kotex.

tra_tien_em_anh_oi() .then(function(tien) return nhau_an_mung(tien); ) .then(function(tien_con_lai_sau_khi_nhau) return mat_xa(tien_con_lai_sau_khi_nhau); ) .then(function() // het tien return hue_oi(); );Lưu ý trong mẫu .then thứ hai, giá chỉ trịtien_con_lai_sau_khi_nhau là công dụng của function nhau_an_mung, tiếp đến tiền, à ko có kế tiếp nữa vày đã hết tiền, .then ở đầu cuối ko có mức giá trị gì truyền vào cả !

Anh em cũng chăm chú là .then vẫn dấn vào 1 function, nếu như chọi mẫu khác vào, tuy nó cho phép chúng ta bao gồm quyền im lặng .then(null) nhưng mà đông đảo gì chúng ta nói, nó vẫn coi nhỏng chưa nói gì cả. Ngay cả truyền 1 Promise mang đến nó, nó cũng lơ luôn. Ăn hoàn toàn có thể nạp năng lượng bậy, nhưng mà nói bắt buộc nói bậy. Luôn truyền mang đến .then một function nhoé.

Xem thêm: Download Adobe Photoshop Cc 2015 Full Version 32Bit/64 Bit, Photoshop Cc 2015 Full Crack Tinhte

Và nhớ return, return 1 Promise không giống cũng dc, nhưng 1 cực hiếm tuỳ ý cũng dc. Cái này anh em cứ buông tay tuỳ một thể cơ mà làm. mặc khi return null cũng viết vào luôn luôn, mang đến nó cụ thể.

.catch

Trong ngôi trường đúng theo tra_tien_em_anh_oi ko trả chi phí, tức là Promise bị reject, thì bé mặt hàng này vẫn chạy, tất yếu là ko có tiền, cơ mà chúng ta đã nhận dc nguyên nhân quịt nợ một bí quyết thanh lịch, có thể chỉ là một trong những string, hoặc cũng rất có thể là một trong exception. Nói tầm thường chúng ta sẽ sở hữu được nguyên do, nhằm còn báo cáo lại mang lại quan bà trong nhà.

Promise ưu việt rộng callbaông chồng sống chổ chúng ta cũng có thể khạc nhổ exception một phương pháp bừa kho bãi nhưng ko băn khoăn lo lắng bởi .catch đã lụm dc hết.**

Viết function tra_tien_em_anh_oi

function tra_tien_em_anh_oi() // sinh sản cùng trả về 1 Promise, khi này Promise làm việc trang thái pending return new Promise(function(resolve sầu, reject) // tâm sinch lý thốt nhiên var isHappy = Math.random() >= 0.5; // ví như vui thì gọi resolve để trả chi phí if (isHappy) var tien = 1000; return resolve(tien); // Promise dc fulfilled // không vui quịt luôn luôn // lưu giữ mang đến ng ta biết lý do vì chưng bọn họ là lập trình viên thanh lịch. var reason = "lịt pẹ tía dek trả đấy làm cái gi nhau"; reject(reason); // Promise sinh hoạt tinh thần reject );Promise HellTuy nói Promise giúp tổ chức code, và nên tránh callbaông chồng hell, dẫu vậy nếu như viết code ko khô nhoáng với thật sạch sẽ thì anh em vẫn lâm vào cảnh Promise Hell. Do kia cơ hội làm sao họ cũng cần cần sử dụng kotexcode.

Promise Hell vị nested .then ngu.

tra_tien_em_anh_oi() .then(function(tien) return nhau_an_mung(tien) .then(function(tien_con_lai) return mat_xa(tien_con_lai) .then(function() return hue_oi(); ) ) )

*

Viết lại thành Kotexcode

tra_tien_em_anh_oi() .then(nhau_an_mung) .then(mat_xa) .catch(console.error.bind(console));Các vấn đề thường gặpSau đây là gớm nguyệt cùng các trung ương đắc khi sử dụng Promise, anh em hoàn toàn có thể tham khảo với góp ý hộ iem.

Code sẽ sync, ngứa ngáy khó chịu yêu cầu covert qua async

// code syncfunction nhau_an_mung() return 500;// wrap lại bởi Promisefunction nhau_an_mung() return Promise.resolve(500);

Tỉ dụ ta có functionve_nha, chỉ chạy lúc đã uong_ruou với hut_thuoc, nhưng mà 2 sở trường đời thường xuyên đó lại hoàn toàn có thể cùng lúc tiến hành. Cho nhanh khô chết.

// cố kỉnh vìe_nhau_khong() .then(uong_ruou) .then(hut_thuoc) .then(ve_nha) .catch(console.log);// đề xuất viết nắm nàye_nhau_khong() .then(function() return Promise.all(< uong_ruou(), hut_thuoc() >) ) .then(ve_nha) .catch(console.error.bind(console));Cách viết thứ nhất đủng đỉnh vì ý muốn đốt điếu thuốc nên vắt nhịn đến lúc tàn cuộc nhậu, ví dụ uong_ruou phải 1 giờ đồng hồ, hut_thuoc cũng 1 giờ đồng hồ thì ta đề nghị 2 giờ bắt đầu về mang lại nhà.

Cách viết thứ hai cần sử dụng Promise.all code chạy nhanh hao vội vàng nhiều lần so với biện pháp 1 bởi vì uong_ruou và hut_thuoc vẫn dc chạy tuy vậy tuy nhiên, cùng lúc ( parallel ) nên chỉ tốn 1 mang tiếng đang ngừng. Nhanh gấp rất nhiều lần.

Kinch nguyệt là vật gì chạy parallel dc thì đến chạy parallel hết. Tốc độ nâng cấp hết sức vi diệu !

Một ví dụ khác, ta phải đi thỏng viện mượn sách, nhằm đi ta phải tiền với thẻ sinch viên, nhưng thẻ sinh viên thì đề xuất có tiền bởi ngày qua thất bại bóng mang nạm mẹ rồi. (case này đưa tỉ chuộc thẻ ko mất chi phí nhoé)

Anh em nghe mùi hương chắc chắn cũng biết nested .then

function findMoney() .then(function(money) // findMoney trả về .. money // truyền money vào findCard để chuộc thẻ sinh viên return findCard(money) .then(function(card) // có thẻ thì đi tlỗi viện search sách return findBooks(money, card) // findBooks nên chi phí và sách trường đoản cú các Promise trên .then(function(books) // lựa sách cấm trẻ em hiểu thôi return readEpicBooks(books.filter(function(book) return !! (book.categoryName === "18+"); )); ); ); ) .catch(console.error.bind(console));Trường thích hợp nlỗi bên trên nested .then tương đối khó khăn tránh tuy vậy ước ao tách vẫn có không ít bí quyết, ví như dùng scope ví dụ điển hình.

Xem thêm: Yt Là Gì ? Ý Nghĩa Của Mỗi Nhãn Là Gì

Anh em như thế nào chưa chắc chắn scope thì coi ở đây http://alokapidakaldim.com/posts/scope-va-closure-la-khi-gi-

var moneyfindMoney() .then(function(_money) money = _money; return findCard(money); ) .then(function(card) return findBook(money, card); ) // .....Hoặc cũng có thể cần sử dụng Promise.all

var money = findMoney();var thẻ = moneyPromise.then(findCard);Promise.all() .then(function(res) return findBooks(res<0>, res<1>); ) .then(console.log.bind(console)) .catch(console.error.bind(console))Có điều nếu chỉ nested .then 1 cung cấp thì cũng ko rất cần được tự tay bóp dái đưa ra mang lại nhức. Kinh nguyệt là tuỳ ngôi trường phù hợp nếu như thấy rối với nặng nề đọc thì họ bắt đầu đề nghị refactore.

Túm mẫu váy lại

Promise.resolve("em xin không còn ạ");

à mà quên, câu hỏi có trúng chưởng: Code tiếp sau đây dở người ngơi nghỉ chổ làm sao, hãy chỉ dẫn 10 lý do chứng minh quocnguyen đẹp trai.

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 *