Mã đồng bộ và mã không đồng bộ trong JavaScript
Hãy xem xét đoạn mã sau:
console.log('1');
console.log('2');
Rõ ràng là đầu tiên lệnh ghi console đầu tiên sẽ chạy, rồi sau đó đến lệnh thứ hai. Tức là các lệnh của mã chúng ta được thực hiện lần lượt - theo thứ tự chúng xuất hiện trong mã. Mã như vậy được gọi là đồng bộ.
Bây giờ hãy xem xét đoạn mã sau:
setTimeout(function() {
console.log('1');
}, 3000);
console.log('2');
Trong trường hợp này, các lệnh không được thực hiện theo trình tự xuất hiện trong mã: lệnh ghi console đầu tiên sẽ thực thi khi đến thời điểm của nó, nhưng phần mã còn lại không chờ đợi thời điểm đó, mà tiếp tục thực thi. Mã như vậy được gọi là không đồng bộ.
Mã không đồng bộ xuất hiện trong JavaScript khá thường xuyên: khi làm việc với bộ định thời, khi gắn bộ xử lý sự kiện, khi tải hình ảnh, khi làm việc với công nghệ AJAX cho phép tải các phần của trang từ máy chủ, khi làm việc với NodeJS, là JavaScript phía máy chủ.