Sự khác nhau giữa việc return await và không có await trong Promise | Async Await | Nodejs tutorial

🚩 Subscribe ➜ / tipsjavascript
#promise #asyncawait #nodejs
✅ Follow Me:
Blog: anonystick.com
Facebook: / tipjs
KZread: / tipsjavascript

Пікірлер: 33

  • @astraflayer4970
    @astraflayer49709 ай бұрын

    Theo em hiểu là: 1. Sử dụng return await thì func sẽ đợi khi promisedDivision callback lại nên try-catch sẽ bắt được resolve hay reject. 2. Chỉ dùng return thì func sẽ không đợi khi promisedDivision callback mà return về Promise {} (đang pending nên không dính catch). Khi ra phạm vi func run không có try-catch nên lỗi. => Không dùng await vẫn muốn bắt được lỗi thì nên dùng .catch sau Promise luôn :v

  • @KhangNguyen-kq2iw
    @KhangNguyen-kq2iw2 жыл бұрын

    Video rất bổ ích ạ, mấy case này ít ai ngồi test từng cái, hên có clip này vào xem

  • @anonystick

    @anonystick

    2 жыл бұрын

    Cảm ơn bạn. Thực sự xem video mới hiểu được, nhìn vào tưởng không có await thì chạy không được

  • @thanhannguyen2013
    @thanhannguyen2013 Жыл бұрын

    Anh return ra 1 promise mà nên đâu có bắt lỗi đc bằng cách dùng try catch đâu. Đằng nào chẳng return ra 1 promise thì thêm async/await vào làm gì nhìn code nó xấu.

  • @brolynguyen3430
    @brolynguyen34302 жыл бұрын

    em còn tưởng khi không có await nó sẽ return về 1 project is pending?

  • @haita5491
    @haita5491 Жыл бұрын

    Theo em nghĩ best practice khi sử dụng try-catch trong 1 async method là khai báo 1 biến bất kỳ để lưu kết quả bên trong scope try-catch, sau khi ra khỏi try-catch ta mới return về biến này. Ngoài trường hợp này ra thì việc return await 1 promise ở cuối hàm là dư thừa.

  • @vietnha1999

    @vietnha1999

    9 ай бұрын

    Nếu bạn đọc về v8 thì nó k dư thừa đâu

  • @Dung.Bui.97

    @Dung.Bui.97

    8 ай бұрын

    @@vietnha1999 mình xin docs đi ạ?

  • @nguyenduc4406
    @nguyenduc44062 жыл бұрын

    viết .catch thì sẽ bắt dc ở hàm k dùng await

  • @quyetbui4234
    @quyetbui42342 жыл бұрын

    Tiêu đề gây lú, ý kiến cá nhân là như nhau, không hiểu lấy ví dụ catch trong cái hàm cần return để làm gì khi mà không sử dụng await thì viết ở đâu nó cũng đã chạy qua đâu có đợi để mà vô catch?

  • @phamvanhan7037
    @phamvanhan70372 жыл бұрын

    Những video a ra dạo gần đây hình như có xu hướng hướng đến newbies nhiều hơn?

  • @anonystick

    @anonystick

    2 жыл бұрын

    Tinh ý ghê :)

  • @hungtruongthanh6644
    @hungtruongthanh66442 жыл бұрын

    1. Yes, cám ơn anh chia sẽ tip hay. 2. Lời khuyên của em là ngược lại. Không nên dùng await. Muốn bắt lỗi của promise thì cứ .then .catch thôi. 3. Try catch dùng cho async await thôi chứ case anh demo có vẻ đi lệch hướng

  • @tranvandung5361

    @tranvandung5361

    2 жыл бұрын

    Đồng quan điểm

  • @anonystick

    @anonystick

    2 жыл бұрын

    Có thể chúng ta đã hiểu nhầm nhau dẫn đến việc nói sai mục dích của video rồi. Đây là mổ xẻ vấn đề 2 cách làm khác nhau. Để tôi cho các bạn mới học biết khi nào nó thế này và thế kia... Chứ mà khuyên, thì tôi có bao giờ làm theo các cách này đâu...

  • @tranvandung5361

    @tranvandung5361

    2 жыл бұрын

    @@anonystick nhưng vẫn học đc nhiều kiến thức từ thầy

  • @ThuongNguyen-km7vg

    @ThuongNguyen-km7vg

    2 жыл бұрын

    tại sao nên bắt lỗi promise bằng .catch vậy ạ. nó có gì tốt hơn vậy ạ?

  • @angVanHuy-tf2rv
    @angVanHuy-tf2rv2 жыл бұрын

    e mới test đặt try catch ở hàm run thì bắt đuọc hết lỗi

  • @anonystick

    @anonystick

    2 жыл бұрын

    Đương nhiên nếu em bắt ở run... Vì nhảy ra rồi mà .

  • @TrongNguyen-yc1lx
    @TrongNguyen-yc1lx4 ай бұрын

    return await newPromise: const result = await promise; return result; return newPromise: const promise = newPromise; return promise;

  • @minhhieple6483
    @minhhieple6483 Жыл бұрын

    Thank anh đã chia sẻ, trước đây em luôn nghĩ không có sự khác biệt khi một hàm async sẽ không có sự khác biệt khi return data hay return await data. Nhưng theo kinh nghiệm của em, ở hàm run nên để try catch vì nó là hàm gọi tất cả các function còn lại, như vậy handle lỗi sẽ dễ dàng hơn, không cần phải return await nữa. Không biết trong thực tế anh sẽ xử lý như thế nào ạ ?

  • @buidu691

    @buidu691

    Жыл бұрын

    mình thấy return await với return không await khác nhau mà , nếu return await thì giống như kiểu mình .then() 2 lần á, còn return ko await thì giống . then() 1 lần để bắt result được resolve của thằng promise đc return . Ko biết mình hiểu thế đúng ko

  • @trungnamle9884
    @trungnamle98842 жыл бұрын

    a lam 1 bài về async/await trong foreach, map, for of đi anh

  • @anonystick

    @anonystick

    2 жыл бұрын

    OK em!

  • @KhangNguyen-kq2iw
    @KhangNguyen-kq2iw2 жыл бұрын

    anh ơi cho em hỏi 2 câu đc k ạ: - câu 1: trong dữ án thực tế sd nodejs express để viết BE, thì trường hợp xoá dữ liệu mình có nên xoá thẳng trong db k anh, nếu k thì dùng cách nào? - câu 2: giả sử mình có 2 model menu và món ăn, thì trong mỗi menu sẽ có nhiều món ăn, v mình xoá menu mà đã chứa món ăn thì nó có gây lỗi gì k anh

  • @anonystick

    @anonystick

    2 жыл бұрын

    1 - Xóa thì ở các dự án ở công ty thì không bao giờ xóa thẳng trong DB nha. Mà là xóa CONG thôi. bèo nhất thì move qua table khác, or thêm status và time xóa... 2 - Món ăn là một table, Menu là một table được tạo thành từ nhiều món ăn. Vậy xóa Menu thì món ăn không liên quan...

  • @KhangNguyen-kq2iw

    @KhangNguyen-kq2iw

    2 жыл бұрын

    @@anonystick v mình xoá món ăn cũng k liên quan đến menu nên vẫn xoá bth đúng k anh

  • @anonystick

    @anonystick

    2 жыл бұрын

    @@KhangNguyen-kq2iw CÓ. Xóa món ăn thì MENU lấy id refer ở đâu?

  • @KhangNguyen-kq2iw

    @KhangNguyen-kq2iw

    2 жыл бұрын

    @@anonystick vấn đề xoá này nhìn v mà hack não quá anh, mong anh ra video về phần này bên nodejs

  • @nguyenanhtuan355

    @nguyenanhtuan355

    2 жыл бұрын

    soft delete

  • @Jufinyan
    @Jufinyan Жыл бұрын

    # Rút gọn Hãy pause video tại mốc 7:55 1. `async`: Hãy xem hàm divideWithAwait, nó được bắt đầu bằng cú pháp `async`. Thông báo rằng, hàm này sẽ có sử dụng `await`. 2. `await`: Nằm trước lệnh gọi hàm promisedDivision(6, 0). Thông báo rằng hàm promisedDivision sẽ trả về đối tượng Promise, hãy chờ và xử lý nó. - (1) Vậy nếu nếu hàm promisedDivision trả về không phải đối tượng Promise thì sao? -> Gói kết quả vào Promise có trạng thái resolve, trước khi gán cho biểu thức hoặc return nằm trước await. - (2) Gói vào để làm gì? -> Để kết quả trả về là Promise Object. Và nếu là Promise Object thì bên trong sẽ có `.then method`, mà nếu có `.then method` lập trình viên muốn xâu chuỗi (chain promise) bằng cách gọi `.then` liên tục bao nhiêu lần cũng được, miễn là kết quả trả về vẫn là Promise Object. - Xử lý nó? Cụ thể là làm gì? : Tùy vào từng trạng thái của đối tượng Promise (Pending, Fulfilled (có người gọi là Resolved), Rejected) mà có các hành động xử lý khác nhau: - Pending: thường là sau await là lệnh call tới 1 hàm có return Promise đã khai constructor đóng vai trò là executor, cấu trúc đại khái như `return new Promise( (resolve) => { resolve() } )`. Trong trường hợp này thì await sẽ chờ executor gọi resolve(), và nhận về kết quả. Tùy thuộc kết quả là Fulfiled hay Rejected mà chạy tiếp. - Fulfilled: gán cho bên trái `await`. - Rejected: throw Error. Nếu nằm trong khối `try` của cú pháp `try {...} catch {...}` thì catch sẽ bắt được error này và thực thi.

Келесі