Event Loop là gì? Asynchronous và Synchronous

Event Loop là gì? Asynchronous và Synchronous

Như các bạn học JavaScript đều biết, chúng mình đều có thể viết JS ngay trên trình duyệt Web (browser) như Chrome, Edge, Cốc Cốc hay Firefox, bla bla... Vậy thì vì sao lại làm được như vậy? Cùng tìm hiểu chút nhé.

Browser Engine

Được xem như trái trim của hầu hết mọi browser vì không ai có thể sống nếu thiếu trái tim - nơi mà việc tuần hoàn máu đi khắp các bộ phận trên cơ thể. Mỗi một browser thì sẽ có một loại engine riêng, giống như mỗi một hãng xe máy hay oto, ở từng phân khúc mà động cơ (trái tim của các phương tiện giao thông) sẽ có sự khác biệt. Nhưng nói chung dù là con người hay máy móc thì đều cần phải có trái tim, nó phải còn hoạt động và công suất như thế nào thì tùy vào mỗi người, mỗi loại máy móc.

Ở đây, chúng ta sẽ tìm hiểu qua V8 Engine thôi, các bạn muốn tìm hiểu thêm thì vào đây.

image.png

Browser có nhân Chromnium như Google Chrome sử dụng engine có tên là Blink, song song với đó để có thể chạy JavaScript trên browser, V8 Engine được ra đời. Ngoài ra, V8 cũng chính là engine giúp cho JavaScript chạy được phía serve side, nói lên sự có mặt của NodeJS hay là cả MongoDB (đã chuyển sang engine khác). Nó được gọi là JavaScript Engine.

JavaScript Engine/ JavaScript Runtime

A JavaScript engine is a program or interpreter which executes JavaScript code. Một JavaScript engine là một chương trình hoặc một trình thông dịch để thực thi code của JavaScript.

Okay, ở bài này chúng ta sẽ không đào quá sâu nó làm chi, mấu chốt cụ thể của bài này là hiểu Event Loop, cũng như phân biệt JavaScript có phải là một ngôn ngữ bất đồng bộ (Asynchronous) hay không? Hấp dẫn chưa nào!

image.png

Hình ảnh trên là một mô tả đơn giản của JavaScript Runtime. Memory Heap là nơi phân chia bộ nhớ và Call Stack - nơi mà các tác vụ được thực thi.