Promise – Async thì sao nào?
-
Mình code frontend vs backend chỉ dùng mỗi thư viện này để giải quyết vấn đề này
https://github.com/caolan/async -
Thanks bác cuối cùng cũng có người post bài này
e copy lại cho chắc
-
@thuanitdn Mình cũng rất thích thư viện này. Nhưng khi dùng async thì không có kiểu promise1.then(promise2).then(promise3) đẹp mắt như thế kia.
-
Nếu được thì các anh có thể viết 1 bài viết về https://github.com/caolan/async được không ak.Để so sánh giữa ASYNC và promise ak
-
Còn cách dùng Async vs await keyword thì thế nào bạn ơi, khi mình tìm hiểu về starter kit React
họ viết toàn bằng những keyword này, mình hiểu ý nghĩa nhưng lại không biết cách sử dụng và thực hành... -
This post is deleted! -
@trungducng mình thấy bài viết khá vui vẻ. Phải hiểu Promise tương đối sâu mới viết được như vậy.
Nhân tiện share cái promise-wtf cây nhà lá vườn. Bluebird và Async thì quá ngon rồi. Nhưng hiện nay hầu hết các trình duyệt đã hỗ trợ built-in Promise, ôm mấy cục Bluebird, Async to đùng về browser thì cũng mệt. Nhưng dùng native Promise thì lại không có cái .finally thành ra hơi thiếu thiếu (finally proposal đang còn ở stage 2). Vậy là phải chế ra em này, inherits cái native, bổ sung finally() và series(). Có buff thêm chút polyfill nhẹ nhẹ - không pass A+ test suite - cho trình duyệt cổ đại, nói chung cũng đủ đồ chơi cho anh em nào thích gọn gàng linh hoạt
-
@ndaidong Like module của bạn, nhưng mình thấy hàm 'then' có thể đảm nhận vai trò của 'finally'. Ví dụ mình thay đoạn của bạn:
//However, it's better to have "finally" there: return Article.list(skip, limit).then((result) => { data.entries = result; }).catch((err) => { data.error = err; }).finally(() => { res.render('landing', data); }); };
Bằng đoạn:
// thay finally bằng then. return Article.list(skip, limit).then((result) => { data.entries = result; }).catch((err) => { data.error = err; }).then(() => { res.render('landing', data); }); };
-
@vahaha thông thường thì đúng như bạn nói. Nhiều trường hợp then có thể thay cho finally. Nhưng nhiều trường hợp thì không. Chẳng hạn trong cái catch mình throw ra 1 exception thì then sau đó sẽ không bắt được.
-
@ndaidong Ah, mình hiểu ý tưởng của bạn rồi. Như vậy thì code sẽ gọn hơn.
-
Tác giả gốc của bài viết đây
Số là mình viết bài này cách đây tầm 3 năm, từ cái thời 4rum cũ. Mục đích ban đầu mình viết là để chửi sml mấy bài viết khác trong 4rum vì cái tội chém linh tinh về Promise.
Vì sau này 4rum đổi DB, các bài viết cũ không còn nữa, mấy anh em repost bài này lại censore hết các đoạn chửi gay cấn, nên thành ra nó lan man
-
@rikky Không liên quan lắm
Nhưng không nhầm bạn làm ở sphinx?
Chúng ta đã quen nhau -
@trungducng mình xin lỗi
-
Chính chủ về rồi. Bác rikky này mới là cao thủ Node.js chân chính. Sau thời
Promise
thì nay đã đến thờimonads
, bữa nào rảnh rỗi làm bài thông não anh em tôn thờ chủ nghĩa functional programming đi bác -
Bài này viết từ 2 năm trước rồi của rikky, bạn này đổi tài khoản admin cũ của rikky để restore db. Chứ bạn này ko cố tình sao chép lại.