Skip to content

Instantly share code, notes, and snippets.

@anonystick
Last active March 13, 2019 08:26
Show Gist options
  • Save anonystick/514a490e23e867b999a0a5988498fd0a to your computer and use it in GitHub Desktop.
Save anonystick/514a490e23e867b999a0a5988498fd0a to your computer and use it in GitHub Desktop.
//ref : https://anonystick.com/blog-developer/tu-hoc-javascript-neu-co-asyncawait-roi-thi-promise-co-con-loi-thoi-khong-can-thiet-dung-den-hay-khong-8znFD1Z3.jsx
//home page : https://anonystick.com/
Đây là phần cuối về Series Callback JavaScript. Rất vui để đi đến với các lập trình js đến tận phần 4 và cũng như phần cuối.
- Ở phần 1 chúng ta đã giới thiệu và giải thích rõ về callback là gì? Và khi nào callback xảy ra? ở phần này hầu như tôi thấy các
bạn cũng chưa hào hứng lắm bởi vì hầu hết các DEVJS( DEVELOPER JS) cũng đã nắm và gặp rất nhiều trường hợp phải sử dung callback.
Nên cũng có ít câu hỏi về phần 1. Ok bypass
- Ở phần 2 Có vẻ hay hơn khi nói về promise một object của javascript giúp đỡ DEVJS control được callback mà giảm bớt thời gian
khi sử dụng hay đụng độ những task liên quan đến Callback. Và cũng chính ở đây có một số bạn lại hỏi: "sao không sử dụng Async/await"
Vâng các bạn quả thật không sai khi vào đề luôn haha. Nhưng ở phần 2 này tôi chỉ nói gọn về Promise thôi.
- ở phần 3 Điều gì tới cũng đã tới các nhà phát triển đã cố gắng giúp cộng đồng chúng ta giảm áp lực hơn nhiều khi sử dụng callback, hay
promise, khi cung cấp thêm những object mới trong đó có Async.await, một object tuyệt diệu.
Nhưng cũng chính vì Async/await mà Promise lại lép vế so với Async/await hay gọi là lỗi thời không?
Đó là một câu hỏi khá hay, và tôi cũng khá bất ngờ vì câu hỏi này. Đúng, hằng ngày chúng ta sử dụng Async/await và promise liên tục.
Ngoài lề chút: Khi các devjs cứng cựa sẽ gặp những task mà luôn luôn có callback vì một project không chỉ là một luồng hay gọi là
một service mà nó có thể nhúng nhiều server vào đó. A gọi cho B, B gọi C, C trả lời A. Vậy mới đau chứ....
Tiếp câu hỏi đó tôi đã suy nghĩ và cũng đã tìm ra được câu trả lời. Vâng! promise không hề lỗi thời, không hề phai nhạt trong tâm
trí người devjs . Tôi thề. Trong quá trình code tôi vấn sử dụng cả hai promise và async/await.
Có những trường hợp tôi không thể sử dụng chúng (async/await) và tôi bắt đầu quay lại nhờ vả một cách thân thiện Pomise().
Để chứng minh vì sao tôi nói vậy thì mời các bạn xem qua ví dụ sau:
Đề bài:
Hãy tìm họ tên F1, F2, F3 của chiếc SH 125i của anh A .
Giải thích: Là bài toán tìm các đời chủ của chiếc xe của anh A.
Nghe có vẻ đơn giản nhưng nó đơn giản thật, quan trọng của thuật toán này là tối ưu và performace thôi.
Và tôi sẽ cho các bạn thấy Promise lợi hại thế nào?
Cách 1 : chúng ta sử dụng async/await để giải quyết bài toán sau:
```
async function layChuXe() {
let F1 = await getInfoF1(); // Lay info F1 thong qua F2, F3 mat 4 second
let F2 = await getInfoF2(); // Lay info F2 thong qua F3 mat 3 second
let F3 = await getInfoF3(); // Lay info F3 2 second
return F1 + '-'+ F2 +'-'+ F3; // get info
}
```
Vậy khi muốn có thông tin toàn bộ các chủ xe thì phải tìm chủ đầu tiên rồi mới biết bán cho ai , cứ lần lượt cho nên,
tìm F1 lại tốn thời gian hơn.
Như vậy muốn biết hết thông tin thì layChuXe() tiêu tốn chúng ta (4+3+2) = 9 second. Lúc đó mới return về result. wow
Mất 9 second đó các bạn ạ.
Do đó tôi đã nghĩ ngay tới việc quay lại giờ sự giúp đỡ của Promise().
Cũng bài toán đó tôi sẽ sử dụng Promise.all().
See full Code : https://anonystick.com/blog-developer/tu-hoc-javascript-neu-co-asyncawait-roi-thi-promise-co-con-loi-thoi-khong-can-thiet-dung-den-hay-khong-8znFD1Z3.jsx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment