Promise – Async thì sao nào?



  • @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. :cry:



  • 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...

    <3 React, Meteor JS...

    0


  • 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 :D



  • @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.



  • @trungducng

    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ời monads, 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 :D



  • 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.


Log in to reply