Vietnam

    Nodejs.vn

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Popular
    • Tags
    • Groups
    • Search

    Promise – Async thì sao nào?

    Frontend
    javascript
    6
    16
    20740
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • trungducng
      trungducng last edited by

      This post is deleted!
      ? rikky Lê Mạnh Hùng 3 Replies Last reply Reply Quote -3
      • ?
        A Former User @trungducng last edited by A Former User

        @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 😃

        vahaha 1 Reply Last reply Reply Quote 2
        • vahaha
          vahaha @Guest last edited by vahaha

          @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);
            });
          };
          
          • . ^
          ? 1 Reply Last reply Reply Quote 2
          • ?
            A Former User @vahaha last edited by

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

            vahaha 1 Reply Last reply Reply Quote 1
            • vahaha
              vahaha @Guest last edited by

              @ndaidong Ah, mình hiểu ý tưởng của bạn rồi. Như vậy thì code sẽ gọn hơn.

              • . ^
              1 Reply Last reply Reply Quote 0
              • rikky
                rikky @trungducng last edited by

                @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 😁

                Khoa Lê Duy Tung Nguyen215 2 Replies Last reply Reply Quote 6
                • Khoa Lê Duy
                  Khoa Lê Duy @rikky last edited by

                  @rikky Không liên quan lắm
                  Nhưng không nhầm bạn làm ở sphinx?
                  Chúng ta đã quen nhau 🙂

                  1 Reply Last reply Reply Quote -5
                  • Lê Mạnh Hùng
                    Lê Mạnh Hùng @trungducng last edited by

                    @trungducng mình xin lỗi 😞

                    http://fantasticvn.com/

                    1 Reply Last reply Reply Quote 6
                    • ?
                      A Former User last edited by A Former User

                      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 😃

                      1 Reply Last reply Reply Quote 2
                      • Tung Nguyen215
                        Tung Nguyen215 @rikky last edited by

                        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.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        $(document).ready(function () { app.coldLoad(); }); }