Synchronous Là Gì

  -  

Trước khi vào khám phá các vấn đề nâng cấp như Promise, Class thì chúng ta sẽ khám phá thế nào laAsynchronous với Synchronous. Đây là hai có mang mà đa phần các lập trình sẵn viên mới vào nghề chưa chắc chắn được thực chất của nó đề xuất dẫn cho tới xử lý trường hợp bị sai.

Bạn đang xem: Synchronous là gì

*


*

Trong bài có thực hiện từ viết tắt:

Sync =>SynchronousAsync => Asynchronous

Đầu tiên chúng ta sẽ mày mò khái niệm vềAsynchronous và Synchronous sẽ nhé.

1.Synchronous là gì?

Synchronous tức là xử lý đồng bộ, công tác sẽ chạy theo từng bước và chỉ bao giờ bước 1 thực hiện hoàn thành thì mới nhảy sang cách 2, bao giờ chương trình nàychạy xong mới khiêu vũ qua công tác khác. Đây là phương pháp cơ bản trong thiết kế mà bạn đã được học tập đó là khi biên dịch các đoạn mã thì trình biên dịch sẽ biên dịch theo thứ tự từ bên trên xuống dưới, từ bỏ trái qua cần và chỉ bao giờ biên dịch ngừng dòng sản phẩm công nghệ nhât mới nhảy sang chiếc thứ hai, điều này sẽ xuất hiện một tâm lý ta hay call làtrạng thái chờ. Lấy một ví dụ trong tiến trình sản xuất dây chuyền sản xuất công nghiệp được coi là một hệ thống xử lý đồng bộ.

Bài viết này được đăng tại


Synchronous nhì mặt là khía cạnh xấu cùng mặt tốt.

Mặt tốtcủa Synchronous

Chương trình đã chạy theo đúng thứ tự và cónguyên tắc nên sẽ không mắc phải những lỗi về các bước không yêu cầu thiết. Không chỉ có trong lập trình nhưng mà trong thực tế cũng vậy, một công ty đưa ra quy trình đồng hóa sẽ bảo đảm an toàn được unique của sản phẩm, nếu như bị lỗi thì sẽ biết ngay là lỗi tại các bước nào với từ đó sẽ thuận lợi khắc phục.

Mặt xấu củaSynchronous

Chương trình đuổi theo thứ tự đồng điệu nên sẽ ra đời trạng thái ngóng và là không cần thiết trong một số trường hợp, từ bây giờ bộ nhớ vẫn dễ bị tràn vì phải lưu trữ những trạng thái hóng vô duyên đó.

Khi các bạn viết một chương trình thống trị và trong số ấy có thao tác lưu, mỗi khi lưu chúng ta yêu cầu bạn dùng có muốn lưu hay không? nếu còn muốn lưu thì click Yes, trái lại click No. Trường phù hợp nay gây tai ương nếu người dùng vô tình chỉ click Lưu mà lại không chú ý đến câu hỏi mà hệ thống đưa ra yêu cầu ngồi nhâm nhi cafe, đùng một phát cúp điện cố kỉnh là cứ tưởng đang lưu rồi :)Vậy tiến trình xử lý đề xuất đưa ra tính năng lưu tự động, nghĩa là thao tác lưu sẽ bỏ qua bước hỏi đáp kia đi, không duy nhất thiết buộc phải chờ nó OK new lưu.

2.Asynchronouslà gì?

Ngược lại vớiSynchronous thì Asynchronous là xử lý bất động bộ, nghĩa là chương trình rất có thể nhảy đi bỏ qua một bước nào đó, bởi vì vậy Asynchronous được ví như 1 chương trình hoạt động không nghiêm ngặt và không có quy trình bắt buộc việc cai quản rất cạnh tranh khăn. Ví như một hàm A phải phải chạy trước hàm B thì với Asynchronous sẽ không thể bảo đảm nguyên tắc này luôn luôn đúng.

Xem thêm: Day By Day Là Gì - Phân Biệt Day After Day, Day By Day Và Day

Mặt xuất sắc của Asynchronous

Có thể xử lý nhiều quá trình một lúc nhưng mà không phải phải chờ đợi nên tạo cảm giác thoải mái :) Ví dụ bạn đi cam kết một văn bản ở Xã, Phường thì nếu bạn có tiền các bạn sẽ bỏ qua được một vài quy trình phải ko nào, dịp đó măt đã tươi rói và đương nhiên là anh nhân viên cấp dưới cũng tươi ko kém:)

Mặt xấu của Asynchronous

Nếu một chuong trình yên cầu phải có quá trình thì các bạn không thể sử dụngAsynchronous được, điển hình là trong các bước sản xuât một sản phẩmcủa những nhà thứ công nghiệp không thể áp dụng kỹ thuật có tác dụng nhiều công việc một lúc nuốm này được. Còn về công tác trong thiết kế thì sao? Một thao tác làm việc thêm dữ liệu phải trải qua hai quy trình là validate dữ liệu và thêm dữ liệu, nếu làm việc validate xẩy ra sau làm việc thêm thì còn gì tệ hại hơn nữa :).

3. AjaxAsynchronous

Từ trước tiếng mình bao gồm nhận một số câu hỏi như: Tại sao em gán biến hóa giá trị của biến vào kích hoạt success nhưng mà nó không thấy biến hóa vậy anh? Teamviewer kiểm soát thì thấy bạn đã phạm phải lỗi "chưa hiểu về xử lý bất đồng bộ" :).

Ajax Async

Theo khái niệm của Ajax là gìthì Ajax được viết tắt của các từAsynchronous JavaScript và XML, cụ thể từAsynchronous sẽ nói lên Ajaxlà một kỹ thuậtxử lý bất đồng bộ. đa số chúng ta lập trình viên khi viết vận dụng Ajax mà xem nhẹ rằng đó là một chương trình bất đồng bộ, tức làthao tác gởi Ajax và các đoạn code dưới sẽ được chạy song song.


// ĐOẠN 1var message = "Website vhpi.vn thiệt tuyệt";// ĐOẠN 2$.ajax( url : "some-url", data : success : function(result) message = "Giá trị sẽ được thay đổi"; );// ĐOẠN 3alert(message); // tác dụng là website vhpi.vn thật tốt ? What the Fuck?

Như vậy trong ĐOẠN3 đã không nhận được giá trị của ĐOẠN2, nguyên nhân tại sao?

Theo quá trình xử lý thì chương trình chuyển động từ bên trên xuông dưới với từ trái qua buộc phải (điều đương nhiên), nhưng vì chưng Ajax đề nghị mất một khoảng thời gian rất cao (so với tốc độ của trình biên dịch) để request đến URL bắt buộc nếu gửi nó vào xử lý nhất quán thì quả thực trình duyệt cần mất một khoảng thời hạn chờ, vị vậy nó sẽ thường xuyên chạy xuống bên dưới mặc kệ đoạn ajax khi nào xong thì chấm dứt => dẫn mang đến giá trị messagekhông cố kỉnh đổi.

setTimeout Async

Nhưng nếu bạn tạm ngưng trong tầm 10 giây chẳng hạn (ta coi như10 giây đủ để request tiến hành xong) thì phát triển thành message vẫn nhận giá tốt trị mới.


// ĐOẠN 1var message = "Website vhpi.vn thật tuyệt";// ĐOẠN 2$.ajax( url : "some-url", data : success : function(result) message = "Giá trị đang được nạm đổi"; );// ĐOẠN 3setTimeout(function() alert(message); , 10000);//// quý giá đã được thế đổi

Tại sao lạinhư vậy? thực chất setTimeoutcũng là 1 trong Asyncđấy những bạn, nghĩa là những đoạn code bên dưới sẽ chuyển động trước nội dung bên trong setTimeout().

Ví dụ:


Kết quả sẽ xuất hiện thêm 2 -> 1 chứ không hề phải là 1 - 2 như nhiều người đang nghĩ đâu :)

4. Lời kết

Vậy AsyncSync là nhị kỹ thuật đã làm được nhắc đến từ rấtlâu nhưng hôm nay mình mới gồm dịp trình bày về sự việc này, đây không phải là một kỹ thuật chỉ dẫn trong SS6 nhưng mình cũng xin chuyển vào series bởi vì nó có liên quan đến một số phần như Promise.

Xem thêm: Ít Nói Tiếng Anh Là Gì : Định Nghĩa, Ví Dụ, Ít Nói Tiếng Anh Là Gì

Các JS Framework hiện nay như NodeJS, AngularJS hầu như cósử dụng kỹ thuật Async,Syncvà Promise, do vậy hãy học tập kỹ ES6 trước khi ban đầu học nhị phần kia nhé.