Event loop trong javascript là gì?

Hế lô hế lô, Ông dev đây!
Trong video này mình sẽ nói về event loop, là một kiến thức khá là nâng cao nhưng cần thiết trong javascript.
-- Để xem những video về lập trình và gaming --
Nhấn vào đây để theo dõi kênh mình nhé: duyngd.com/Subscribe
-- Blog của mình --
duyngd.com
-- Facebook page của mình --
/ ongdevvuitinh
Cảm ơn các bạn đã quan tâm theo dõi
#ôngdev #javascript #eventloop

Пікірлер: 94

  • @phananh8589
    @phananh85894 жыл бұрын

    một trong những video training rất chất lượng nhất, khâm phục kiến thức chắc chắn và khả năng diễn đạt gọn gàng của anh, rất mong ra anh "xuất bản" những video tương tự, các design pattern và kiến thức core nâng cao, luồng chạy... như vầy rất đáng xem. thank Anh!

  • @ThangTran-hi3es
    @ThangTran-hi3es3 жыл бұрын

    Tuyệt vời, không những lý thuyết mà minh họa cũng như demo quá xuất sắc. Chúc bạn luôn khỏe mạnh để đóng góp những video chất lưọng này cho cộng đồng nhé !

  • @HauLe-sn5yh
    @HauLe-sn5yhАй бұрын

    Kiến thức bạn chia sẻ rất hay. Cám ơn bạn.

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

    Hồi trước hay ước có kênh nào dạy kiến thức kiểu này, bây giờ mới cơ duyên gặp được. Cảm ơn ông a nhiều.

  • @timlanglo2144
    @timlanglo21443 жыл бұрын

    Video rất hay. Cảm ơn anh vì những kiến thức đã chia sẻ.

  • @TungNguyen-wt7vc
    @TungNguyen-wt7vc3 жыл бұрын

    Cám ơn anh đã chia sẻ kiến thức, rất tường tận và dễ hiểu

  • @duonghoai4795
    @duonghoai47953 жыл бұрын

    Rất bổ ích. cảm đã đóng góp cho cộng đồng

  • @nguyenmanh8330
    @nguyenmanh83303 жыл бұрын

    Video thật bổ ích, khả năng kiến thức nền vững vcđ :V diễn đạt khá hay và rất Đà Nẵng

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

    cảm ơn ông Dev nhiều. Rất hay và cô đọng ạ !

  • @tungnguyen3551
    @tungnguyen35513 жыл бұрын

    Quá dễ hiểu, quá hay. Ra nhiều hơn clip JavaScript đi a. 😁👍

  • @phuongnammmo1969
    @phuongnammmo19694 жыл бұрын

    Cảm ơn anh vì đã chia sẻ những kiến thức rất giá trị

  • @KhoaNguyen-bk2kv
    @KhoaNguyen-bk2kv2 жыл бұрын

    Bài chia sẻ hay và chi tiết. Cảm ơn anh nhiều.

  • @khoavo579
    @khoavo5793 жыл бұрын

    anh lý giải rất sâu và chi tiết! thank anh

  • @HoaNguyen-kn4ci
    @HoaNguyen-kn4ci2 жыл бұрын

    Những video như này hay lắm a ạ. Mong a ra những video ntn. Cảm ơn a nhiều

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

    Hay và rất dễ hiểu nha anh. Cám ơn anh đã chia sẽ kiến thức.

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

    Anh Dev truyền đạt dễ hiểu thật :))) Anh vừa làm IT vừa đá chân sang mảng KZread rất hợp luôn.

  • @nguyenchien5084
    @nguyenchien50842 жыл бұрын

    Hay !!!! rất dễ hiểu, luôn thích kiểu học có demo hình ảnh như thế này :))

  • @minhoan7974
    @minhoan79745 ай бұрын

    Cảm ơn a ạ , video của a rất dễ hiểu ạ

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

    tuyệt vời, em đọc tài liệu hoa hết cả mắt vô đây nghe tí hiểu liền :>>>

  • @duoipham
    @duoipham4 жыл бұрын

    Anh giảng siêu dễ hiểu luôn trời ơiiiiiii em mãi mà không hiểu nổi được phần này cho tới khi gặp được anh ạ :((((((( huhuhu cảm ơn anh nhiều ạ :((((((

  • @phanphan6136
    @phanphan61364 жыл бұрын

    Cảm ơn anh!

  • @vilyduytruong4885
    @vilyduytruong48852 жыл бұрын

    dễ hiểu quá, tks a nhìu

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

    Coi video của Phillip hơi ngấm rồi coi của anh nữa thấm nhuần kiến thức lun :3 Hay quá trời

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

    Video tuyệt vời lắm ạ

  • @Zuong2003
    @Zuong200310 ай бұрын

    Đúng là idol của t, cám ơn anh

  • @hieuduong2299
    @hieuduong22993 жыл бұрын

    Anh chia sẻ phần nào cũng rất dễ hiểu. Cứu cánh em mấy lần. Cảm ơn a ạ

  • @TrungNguyenVan-ln7bp
    @TrungNguyenVan-ln7bp2 жыл бұрын

    Hôm trước mình đi pv gặp đúng câu này, hỏi "Event Loop là gì". Hôm đấy đứng hình =))). Cảm ơn bạn đã giải thích rất rõ ràng

  • @duythinho806
    @duythinho8063 жыл бұрын

    cảm ơn a hay thật

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

    Hay quá!

  • @phamthang6558
    @phamthang65582 жыл бұрын

    video hay lắm a ơi

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

    Quá hay ạ

  • @nhiennd
    @nhiennd2 жыл бұрын

    Hay quá a ạ

  • @SonNguyen-zc6je
    @SonNguyen-zc6je4 жыл бұрын

    Hay vãi c anh ạ !!!!!!!!!!

  • @HuyLe-zx8ko
    @HuyLe-zx8ko2 жыл бұрын

    quá hay

  • @tamdhpyc177
    @tamdhpyc1772 жыл бұрын

    hay qá 😀

  • @huyvuvan4019
    @huyvuvan40193 жыл бұрын

    hay a

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

    Thank you sir

  • @konandev4278
    @konandev42782 жыл бұрын

    trước khi học lập trình mình từng nghe mọi nguời nói rằng nên học bằng tiếng anh, học bằng video hay tutorial của người nước ngoài để giỏi hơn vì họ biết nhiều hơn nhưng rồi sau khi mình thử học theo cả 2 phương pháp là học từ các tutorial của VN và nước ngoài thì mình nhận ra rằng người VN mình dạy theo kiểu kinh nghiệm thực tế và luôn đưa ra những trường hợp sát với thực tế nhất nên cảm thấy kiến thức rất gần gữi với mọi người còn bên nước ngoài thì họ dạy theo kiểu chuyên sâu, tức là họ sẽ giống như đào sâu thêm về các khái niệm logic của vấn đề chứ không có tính thực tế lắm, tất nhiên các khái niệm đó là cái mà chúng ta sẽ áp dụng vào thực tế nhưng việc rút ra kinh nghiệm từ thực tế còn đáng giá hơn nhiều so với việc biết và áp dụng kiến thức vào thực tế. Tóm lại VN dạy theo kinh nghiệm thực tế - Nước ngoài dạy theo kiến thức cốt lõi chuyên sâu. Cái nào cũng có điểm mạnh nên mọi nguời hãy học một cách thông thái chứ đửng nên so sánh nhé! Cảm ơn anh Dev vui tính vì video rất hữu ích này. have a good day.

  • @thanhnguyenduy78

    @thanhnguyenduy78

    7 ай бұрын

    kzread.info/dash/bejne/apV7yryKm9KskrQ.html&ab_channel=JSConf nước ngoài dạy đây nhé. Ông dev cũng chỉ học theo và dạy thôi nhé, đừng nói là nước ngoài dạy không thực tế, hơn nữa nhiều người nước ngoài còn giảng dạy thú vị và đầu tư tâm huyết vào đó hơn nhiều

  • @luongminhduy9373
    @luongminhduy93732 жыл бұрын

    Em đang bắt đầu học JS và rất thích những video của anh. Anh cho em hỏi anh xài theme vs code gì vậy ạ?

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

    I luv u :3

  • @LegendsVN
    @LegendsVN5 ай бұрын

    Xem lại sau 1 năm vẫn thấy hay

  • @amanlearnscode
    @amanlearnscode4 жыл бұрын

    Trong cái queue nó còn phân chia ra micro task queue và macro task queue nữa, ưu tiên micro task queue :D

  • 4 жыл бұрын

    Uh, ví dụ như Promise sẽ được ưu tiên hơn setTimeOut

  • @huyuc9528
    @huyuc95282 жыл бұрын

    setTimeout 5s thì khi call stack trống, timer nó mới bắt đầu chạy 5s để trả ra callback hay lúc nó gọi web api là nó chạy cái 5s đó luôn rồi anh

  • @baobaostore
    @baobaostore2 жыл бұрын

    *javascript chỉ có 1 luồng thì tại sao nodeJS có thể xử lý hàng nghìn request cùng lúc được anh? hay là nó xử lý từng request mội, xong cái này rồi mới tới cái kia?*

  • @chauminh1313
    @chauminh13133 жыл бұрын

    e nghĩ là cái này nâng cao nhưng devjs ai cũng nên hiểu nhỉ, vì coi xong bản thân thấy hiểu hơn về luồng chạy của thg js @@, tks a vì video bổ ích

  • 3 жыл бұрын

    Đúng rồi e, cái này dev js ai cũng nên biết

  • @chauminh1313

    @chauminh1313

    3 жыл бұрын

    @ E mò mẫm thì ra dc cái keyword là thread pool, theo e hiểu thì nó chính là cái queue của video trên, e hiểu v k biết có đúng k ạ ?

  • 3 жыл бұрын

    @@chauminh1313 Không nha, thread pool là kiểu 1 cái pattern mà nó sẽ phân chia công việc cho các thread khác nhau. Còn cái queue trên thì nó chỉ là 1 cái lượng công việc đang xếp hàng để được thực thi thôi

  • @thienngo2953
    @thienngo29532 жыл бұрын

    :( ra thêm video đi anhh

  • @anhtuan-nguyen
    @anhtuan-nguyen2 жыл бұрын

    8:30 - Event loop

  • @SonNguyen-bp7pg
    @SonNguyen-bp7pg4 жыл бұрын

    may quá em đang học nodejs mà ko hiểu phần này

  • @trangbui8283
    @trangbui82832 жыл бұрын

    @Ông dev cho hỏi Phần timer deplay của settimeOut nó xảy ra ở đâu và khi nào vậy a? Ở WebAPis hay ở queue a

  • 2 жыл бұрын

    Webapi nha e

  • @NguyenHung-hb3sb
    @NguyenHung-hb3sb4 жыл бұрын

    :/ mấy kênh như này hay nhưng mà sợ một thời gian thì drop mất, hy vọng a ko drop =))

  • @congnamle3632

    @congnamle3632

    3 жыл бұрын

    Làm để chửi những Vozer hỏi YTB Vn sao ko có Technical :) xem nặng thật sự dù nó là video mang tính học tập cực cao kkk

  • @anywhereloc2969
    @anywhereloc29692 жыл бұрын

    Này học ở đâu vậy a e muốn học sâu về js

  • @quangcao2997
    @quangcao29974 жыл бұрын

    e cảm ơn, đúng lúc e không hiểu :(

  • 4 жыл бұрын

    Rất vui vì giúp được em, còn gì ko hiểu thì cứ comment, a sẽ xem xét ra video để giúp :D

  • @james-rx8kw
    @james-rx8kw Жыл бұрын

    vậy thằng fetch khi gọi api thì nó cũng sẽ chạy vô thằng callstack -> webapi -> queue , rồi cuối cùng mới ra lại callstack hả anh hay chỉ có thằng setimteOut mới vào webAPIs ạ

  • Жыл бұрын

    Đúng r e

  • @campingstore123
    @campingstore1232 жыл бұрын

    anh cho em hỏi câu này ạ, trong clip anh có nói là callback ở setTimeout được thực hiện ở call stack, thì như vậy theo em hiểu là câu lệnh setTimeout nào có delay time ngắn hơn sẽ được thực hiện trc, nhưng em có thử chạy bằng nodejs đoạn code gồm 2 câu lệnh setTimeout (() => { console.log (1)}, 1000) và setTimeout (() => { fs.readFileSync('noidung.txt'); console.log (2)}, 999.999). Nếu nội dung file noidung.txt lớn 1 chút thì console.log(1) sẽ được thực hiện trc trong lần đầu tiên, những lần sau thì console.log(2) được thực hiện trc. k biết vấn đề này có gây ra vướng mắc trong thực tế k ạ. Em cảm ơn anh

  • 2 жыл бұрын

    Hmm, thực ra thời gian ngắn hơn, nhưng call sau, thì sự chênh lệch của timeout nó không bằng so với tần số của cpu xử lý, thì nó sẽ kiểu 0.0001ms đó nó lớn hơn cái tick của cpu, thì khi mà cái timeout thứ 2 đi vào thì cái 1 nó đã count đc 1 lúc rồi. Còn lần sau, vì file ko thay đổi, nên code được cached lại, nên khi nó đưa vào cái event list gần như là đồng thời(nhanh hơn cái chênh lệch giữa 2 timeout) thì khi đó nó chạy như e dự kiến. Hmm a nghĩ vậy thôi. Chứ ko chắc nữa, a ít khi gặp th này

  • 2 жыл бұрын

    Em thử đưa cái 999.999 lên trước xem

  • @campingstore123

    @campingstore123

    2 жыл бұрын

    @ em cảm ơn anh, em hiểu rồi ạ

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

    bản chất cái window.onscroll mà ko dùng setTimeout thì nó vẫn được đưa vào queue bình thường mà đúng ko anh, tại em nhớ nó là 1 events thì cũng bay vào queue ạ. E cảm ơn a

  • Жыл бұрын

    Đúng r e.

  • @tungtran3994
    @tungtran39942 жыл бұрын

    cái chỗ callback phút 9:55 cho mình hỏi là nó put callback vào callstack mà lúc này trên video là cái global excution context nó bị remove rồi, thì tại sao biến window vẫn truy cập được nhỉ?, hày là nếu mình truy xuất window trong callback thì thằng js engine nó sẽ giữ lại global context đó

  • @tungtran3994

    @tungtran3994

    2 жыл бұрын

    Mình có câu hỏi này, khi thực hiện setTimeout, thì sau khi timer chạy xong thì callback được gọi, mà thằng event loop nó phải check xem callstack nó empty hay chưa, tức là lúc này global excution context nó đã pop off ra khỏi callstack rồi, thì nếu mà trong callback của setTimeout mình có truy xuất tới biến window.hello, và vẫn truy xuất bình thường vậy thì lúc này sẽ ra sao bạn. nếu GEC sẽ bị pop off thật và khởi tạo lại thì những biến trong GEC bị reset luôn rồi, hay là do thằng callback nó còn ref tới biến var hello = 'xxx'; nên GEC sẽ vẫn giữ lại?

  • 2 жыл бұрын

    Trong thằng settimeout thì nó tự mặc định this(context) là window, nếu muốn thay đổi con text thì mình sẽ phải bind cái cb đó á

  • @tungtran3994

    @tungtran3994

    2 жыл бұрын

    @ tức là GEC sẽ vẫn được giữ lại ? hoặc bạn có link thông tin về chỗ này thì gửi mình với

  • 2 жыл бұрын

    Uh, đó là theo cách mình hiểu, mới search ra cái này, bạn tham khảo thử: www.javascripttutorial.net/javascript-execution-context/

  • @ThienNguyen-su2sp
    @ThienNguyen-su2sp2 жыл бұрын

    cho em hỏi với ạ Nếu anh đang scroll setTimeout bằng 0 thì trong khi anh scrool thì console nó vẫn chạy song song v ạ

  • 2 жыл бұрын

    Đúng r, nhưng ngay khi em dừng scroll lại thì nó sẽ lôi callback của set timeout ra chạy

  • @ThienNguyen-su2sp

    @ThienNguyen-su2sp

    2 жыл бұрын

    vậy cái mà khi anh đang scroll nó chạy có phải hàm callback của setTimeout k ạ. Nếu phải thì tại sao nó không dừng lại để chạy mà ình còn có thể scroll đcuwocj ạ . Em cảm ơn anh nhiều ạ. Chúc anh sức khỏe nè

  • @datnguyennnx

    @datnguyennnx

    2 жыл бұрын

    Callstack nhận vào scoll + cb. Cb trả về console.log sẽ block các hoạt động khác => chạy song song cb với scoll. Khi ông ngưng scoll thì trong callstack chỉ còn Cb chạy vòng for => sẽ block hết các stack khác ( theo mình hiểu là vậy).

  • @oanduyen5864

    @oanduyen5864

    Жыл бұрын

    Chung thắc mắc, không biết anh đã giải được cái này chưa cho em xin đáp án với ạ

  • @nguyenxuantruong2867

    @nguyenxuantruong2867

    7 ай бұрын

    Khi scroll => function được push vào call stack => vì là asynchorous nên webAPIs có setTimeout default khi ở webAPIs là timer(time) callback rồi đẩy cb xuống queue… Lặp đi lặp lại như vậy cho đến khi khi ngưng scroll thì cb được push lên call stack và thực hiện, lúc này log được gen rồi pop, gen rồi pop khiến các action khác bị block, vậy thui

  • @minhhieple6483
    @minhhieple64834 жыл бұрын

    Anh cho em hỏi mấy câu ạ ? - Cách thức hoạt động của Event Loop trong môi trường Browser và Node.js có khác nhau không ạ ? - Em vừa xem 1 video của một anh Dev làm core team của Node.js kzread.info/dash/bejne/goKVm7GGkc3dado.html đoạn đầu (1:10) anh ấy có nói rằng 95% những mô tả về vòng lặp sự kiện trên internet đều sai làm em khá hoang mang :v, mong anh giải thích thêm.

  • 4 жыл бұрын

    Minh Hiệp Lê nó như nhau nha, chỉ có điều việc handle mấy cái event bằng 2 th khác nhau, trên browser thì là web apis(do browser cung cấp) còn node thì nó là 1 module trong node. Còn về việc video này có đúng hay không thì đây là kiến thức của mình sau thời gian làm việc với node có được, nếu bạn cảm thấy không an toàn thì nên bỏ qua, và xem video của anh Dev kia, mình thoải mái mà :D

  • @atNguyen-sy3il
    @atNguyen-sy3il Жыл бұрын

    cái microtask với macrotask nó sẽ đưa vào queue như thế nào vậy anh, với lại micro nó có cần qua web apis không anh.

  • Жыл бұрын

    Đến web apis hay ko nó ko có micro hay macro nha e. Cái callback nó mới phân biệt micro và macro. Đưa vào queue là thằng web apis nó đưa vào sau khi nó thực thi xong. Khi ở trong callback queue thì nó mới phân biệt macro và micro. Rồi nó sẽ dựa vào cái event loop để bốc task nào.

  • @atNguyen-sy3il

    @atNguyen-sy3il

    Жыл бұрын

    @ Huhu, em mông lung quá, em có xem cái video về micro và macro của anh rồi, nhưng mà nó không hình minh họa nên cũng không hiểu lắm, giả sử trong queue có 5 task macro ở trước 1 task micro thì event loop làm sao đưa cái micro này chạy trước đc ạ. nếu có cách gì đó thì trong lúc này 5 cái task macro kia thì mình để nó ở đâu. em có xem 1 số tutorial thì họ bảo có 2 cái queue 1 cái cho microtask (microtask queue) và 1 cái callback queue, và cái callback trong microtask queue sẽ ưu tiên đưa vào call stack trước, thì em xem thấy dễ hiểu hơn nhưng không biết có đúng không. Hôm qua em đi pv thì ngta hỏi câu này, em nói cái khái niệm 2 queue thì họ bảo sai :((((( Anh cứu em với. kzread.info/dash/bejne/qJyc2pStnM3IlLw.html

  • @atNguyen-sy3il

    @atNguyen-sy3il

    Жыл бұрын

    @ Em có xem cái video về micro macro của anh rồi. nhưng mà nó không có hình minh họa nên cũng hơi khó hiểu. VD như giờ mình có 5 cb macro xếp trước 1 cb micro thì làm sao để event loop đưa cái micro chạy trước vậy anh, rồi trong quá trình đưa cái micro lên chạy trước, thì 5 cái macro kia mình để nó ở đâu. Em có xem 1 số tutorial thì họ bảo có 2 queue, 1 queue cho cb của promises (microtask queue) và 1 cái callback queue. thì cb ở trong microtask queue sẽ được ưu tiên chạy trước, và miễn là trong microtask queue còn cb thì cb trong callback queue ko đc execute. Không biết cái này có đúng không. Hôm qua em trả lời pv theo kiểu 2 queue này thì ngta bảo chỉ có 1 queue thôi :(((. Anh cứu em với.

  • Жыл бұрын

    @@atNguyen-sy3il uh nó có 1 cái macro queue chính, bên cạnh đó có thêm cái microtask queue nữa. Có thể cách em diễn đạt nó không đúng ý họ hay sao đó.

  • Жыл бұрын

    @@atNguyen-sy3il javascript.info/event-loop

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

    nghe giọng anh giống như xứ Quảng vậy a?

  • Жыл бұрын

    A quê gốc QN mà, lớn lên ở Đà Nẵng haha

  • @khaihoannguyen9446

    @khaihoannguyen9446

    Жыл бұрын

    @ e ở Đại Lộc đây =)). Mới đầu e nghe giọng anh thấy đã thấy nghi nghi rồi =))

  • @vuinhtien6513
    @vuinhtien65132 жыл бұрын

    for (var i=0; i console.log(i),0); } bạn ơi, bạn có thể giúp mình 1 lần này thôi, mình ko diễn tả được là var và let trong này thì khi đưa vào webapi, thì cái i trong webAPI sẽ là giá trị hay vẫn là i,

  • @phungnguyen1154

    @phungnguyen1154

    2 жыл бұрын

    Không phải là WEBAPI, mà đây là về hoisting, bạn nên nắm thêm khái niệm về nó, tại sao khi sài var trong for lại log ra max I

  • @ucvo6209
    @ucvo62093 жыл бұрын

    ông này nói chuyện kiểu nghênh nghênh v nhỉ