Đồng bộ (synchronous)
Đồng bộ trong lập trình là các tác vụ trong chương trình được thực thi một cách tuần tự, nghĩa là mỗi tác vụ phải hoàn thành trước khi tác vụ tiếp theo có thể bắt đầu. Khi một tác vụ đồng bộ đang được thực hiện, toàn bộ chương trình sẽ phải chờ cho đến khi tác vụ đó hoàn thành mới tiếp tục thực thi các tác vụ khác. Điều này có thể dẫn đến việc chương trình bị "đóng băng" hoặc không phản hồi khi thực hiện các tác vụ nặng hoặc mất thời gian.
const program1 = () => {
console.log("Program 1");
}
const program2 = () => {
console.log("Program 2");
}
program1()
program2()
//Output:
//Program 1
//Program 2
Bất đồng bộ (asynchronous)
Bất đồng bộ trong lập trình là khi một tác vụ có thể xảy ra mà không làm ngừng hoặc chặn luồng thực thi chính của chương trình. Điều này có nghĩa là các tác vụ nặng nề hoặc mất nhiều thời gian (như truy vấn dữ liệu từ server, đọc/ghi tệp lớn) có thể được thực hiện "ngầm" trong khi chương trình tiếp tục xử lý các tác vụ khác.
const program1 = () => {
setTimeout(() => {
console.log("Program 1");
},);
}
const program2 = () => {
console.log("Program 2");
}
program1()
program2()
//Output:
//Program 2
//Program 1
Xử lí bất đồng bộ
JavaScript thực chất là ngôn ngữ đơn luồng và chạy đồng bộ.
Tuy nhiên, để tránh việc bị chặn khi thực hiện các tác vụ nặng (như đọc/ghi tệp lớn, truy vấn dữ liệu từ server,...) mà vẫn tiếp tục xử lý các đoạn code khác, JavaScript sử dụng cơ chế bất đồng bộ thông qua môi trường thực thi (browser hoặc Node.js) để xử lý các tác vụ như I/O, timers và events. Tuy nhiên, để lập trình viên có thể tương tác và làm việc với các tác vụ bất đồng bộ này, họ cần sử dụng các công cụ như callback, promise, hoặc async/await.
Top comments (0)