về cơ bản cách hoạt động của nó cũng khá giống nhau e ạ, ít nhất là với những kiến thức trong bài.
Đúng là phía NodeJS họ thêm khái niệm "phase" vào. Nhưng những thứ như callstack, micro/macrotask thì kiến thức vẫn share nhau. Vì chúng đều based trên V8 mà e, có những cái core thì vẫn giống
Bài viết rất hay ạ.
Nhưng em có thắc mắc là Event loop của Javascript và Nodejs khác nhau đúng ko ạ
Em có tìm hiểu thì event loop của Nodejs được chia thành 6 phases ạ
đoạn này e phải chú ý thật kĩ là ở cái new Promise e đặt await.
Khi e đặt await trước 1 cái Promise, thì Event loop sẽ chờ cho tới khi cái Promise đó được resolve thì nó mới tiếp tục chạy các phần code bên dưới (nhiều blog khác vẫn gọi là nó "pause execution" - dừng thực hiện chờ cho resolve thì mới "resume").
Cụ thể bài của e sẽ như sau:
đầu tiên async1(); được gọi -> thực hiện console.log("async1 start");
tiếp đó e gọi await async2() -> thực hiện console.log("async2 start")
tiếp await new Promise -> thực hiện console.log("async2 promise")
sau đó là tới cái setTimeout -> đẩy callback của nó vào Macrotask queue
Tại thời điểm này code sẽ ko chạy tiếp luôn tới console.log("async2 end"), bởi vì như a nói bên trên e đang await Promise, thì Event loop nó sẽ chờ cho Promise resolve.
và tại thời điểm này callstack trống, Microtask queue trống, thì Eventloop sẽ lấy job từ Macrotask queue ra thực hiện -> ta có console.log("async2 setTimeout") và resolve(), ở đây Promise đã resolve
Event loop tiếp tục đưa console.log("async2 end") vào Microtask (vì nó ở sau await). Tại thời điểm này callstack trống, Microtask chỉ có mỗi 1 job vừa đưa vào, vậy nên console.log("async2 end") được lấy ra và thực hiện luôn
cuối cùng là console.log("async1 end") cũng được đưa vào Microtask (vì nó sau await), và hiện tại ngoài microtask ra cũng ko còn gì cả, nên nó cũng sẽ được lấy ra và thực hiện
Tổng hợp lại ta có kết quả như sau:
async1 start
async2 start
async2 promise
async2 setTimeout
async2 end
async1 end
a cho e hỏi 1 sản phẩm quần đùi có 2 attribute là color và size, mỗi color và size lại có nhiều giá trị vậy thiết kế database như nào cho hợp lí ạ để thí dụ cái quần size L màu đỏ là 1 sản phẩm ạ , em cảm ơn
THẢO LUẬN
👍️
Bày viết hay, đặt ra nhiều câu hỏi để mình tự suy nghĩ lại.
@maitrungduc1410 à em hiểu rồi, cảm ơn anh rất nhiều😍
👌
👍️
👍️
👍️
Seris này hay quá bạn ơi, cám ơn bạn vì đã chia sẻ kiến thức hữu ích
@maitrungduc1410 Dạ, em cảm ơn anh ạ
về cơ bản cách hoạt động của nó cũng khá giống nhau e ạ, ít nhất là với những kiến thức trong bài.
Đúng là phía NodeJS họ thêm khái niệm "phase" vào. Nhưng những thứ như callstack, micro/macrotask thì kiến thức vẫn share nhau. Vì chúng đều based trên V8 mà e, có những cái core thì vẫn giống
Bài viết rất hay ạ. Nhưng em có thắc mắc là Event loop của Javascript và Nodejs khác nhau đúng ko ạ Em có tìm hiểu thì event loop của Nodejs được chia thành 6 phases ạ
Cảm ơn bạn!!
Hay quá anh ạ! Em chưa bỏ qua bài nào của anh. Mong anh ra bài tiếp theo sớm ạ.
@maitrungduc1410 Em hiểu rồiii, cảm ơn anh ạ.
Bài viết quá tuyệt vời, cảm ơn tác giả
đoạn này e phải chú ý thật kĩ là ở cái
new Promisee đặtawait.Khi e đặt
awaittrước 1 cái Promise, thì Event loop sẽ chờ cho tới khi cái Promise đó được resolve thì nó mới tiếp tục chạy các phần code bên dưới (nhiều blog khác vẫn gọi là nó "pause execution" - dừng thực hiện chờ cho resolve thì mới "resume").Cụ thể bài của e sẽ như sau:
async1();được gọi -> thực hiệnconsole.log("async1 start");await async2()-> thực hiện console.log("async2 start")await new Promise-> thực hiệnconsole.log("async2 promise")setTimeout-> đẩy callback của nó vào Macrotask queueTại thời điểm này code sẽ ko chạy tiếp luôn tới
console.log("async2 end"), bởi vì như a nói bên trên e đangawait Promise, thì Event loop nó sẽ chờ cho Promise resolve.console.log("async2 setTimeout")vàresolve(), ở đây Promise đã resolveconsole.log("async2 end")vào Microtask (vì nó ở sauawait). Tại thời điểm này callstack trống, Microtask chỉ có mỗi 1 job vừa đưa vào, vậy nênconsole.log("async2 end")được lấy ra và thực hiện luônconsole.log("async1 end")cũng được đưa vào Microtask (vì nó sauawait), và hiện tại ngoài microtask ra cũng ko còn gì cả, nên nó cũng sẽ được lấy ra và thực hiệnTổng hợp lại ta có kết quả như sau:
hay ạ
Bài viết hay ngắn gọn, đầy đủ. Nhưng ko biết các update này ở Spring security 6 có lợi ích gì lớn ko ạ ?
a cho e hỏi 1 sản phẩm quần đùi có 2 attribute là color và size, mỗi color và size lại có nhiều giá trị vậy thiết kế database như nào cho hợp lí ạ để thí dụ cái quần size L màu đỏ là 1 sản phẩm ạ , em cảm ơn
👍️👍️