본문 바로가기
Language/JavaScript

[JavaScript] 비동기, 동기

by 며루치꽃 2020. 8. 30.

동기: 위에서부터 실행된다

비동기: 코드 상의 순서대로 실행되지 않는 코드를 의미. 실행되기 전까지는 언제 실행될지 모른다.

언제 실행될지 모르기 때문에 항상 대비를 해놔야한다. 사용자가 언제 이벤트를 발생할지 모르기 때문에

항상 대비를 해놔야한다. 

 

동기방식 (Synchronous)

 

요청을 보낸 후 응답(=결과)를 받아야지만 다음 동작이 이루어지는 방식이다.

어떠한 일을 처리할 동안 다른 프로그램은 정지한다.

실제 cpu가 느려지는 것은 아니지만 시스템의 전체적인 효율이 저하된다고 할 수 있다.

-> 요청과 결과가 한 자리에서 동시에 일어남

-> A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞추겠다.

 

동기방식의 장점: 설계가 매우 간단하고 직관적이다.

동기방식의 단점: 과가 주어질 때까지 아무것도 못하고 대기해야 한다.

 

비동기 방식 (Asynchronous)

 

요청을 보낸  후 응답(=결과)와는 상관없이 다음방식이 동작하는 방식이다.

결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있다.

비동기식은 비동기식 처리를 요청할 때 할일 이 끝난 후 처리결과를 알려주는 콜백이라는 함수를 함께 알려준다.

비동기식 처리를 요청하였을 때 호출받은 함수는 바로 응답(=확인)을 수행한다.

이 응답은 처리 결과에 대한 응답이 아니라 요청에 대한 확인 동작일 뿐이다.

호출받은 함수는 처리가 끝나면 요청한 함수를 호출하여 처리 결과를 전달하게 된다.

이러한 함수 호출의 흐름은 사용자가 아닌 일을 마친 시스템이 호출하는 형태이기 때문에 콜백이라고 불린다.

이미 응답을 했기 때문에 처리결과를 함수 호출이라는 형태로 전달하는 것이다.

비동기 방식은 DOS같은 단일 운영체제에서는 불가능하며 windows 같은 multitask 환경에서만 가능하다.

(ajax에서는 success, error, complete 을 콜백함수라고 할 수 있다.)

 

<동기식>                                                                                 <비동기식>

 

비동기방식의 장점: 결과가 주어지는데 시간이 걸리더라도 그 시간 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있는 장점이 있다.

비동기방식의 단점: 동기보다 과정이 복잡하다.  

 

-> 요청한 그 자리에서 결과가 주어지지 않음

-> 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.

 

Ajax

 

기존에는 Ajax는 Asynchronous Javascript and XML의 약자로 사용되었으나 이후에는 웹 어플리케이션 개발에 사용되는 기술 그룹을 말한다.  

비동기 방식인 Ajax의 주목적으로는 화면 전환 없이 클라이언트와 서버간의 정보를 교환하기 위해서이다.

기존 웹 어플리케이션에서는 HTTP 요청이 웹 서버로 전달되며, 웹 서버는 요청을 처리한 후 사용자에게 HTML 페이지를 리턴한다.

이 과정에서 HTTP 전송 중에는 사용자는 웹 어플리케이션과 상호 작용을 할 수 없다.

하지만 Ajax 통신을 이용하면 클라이언트와 화면을 랜더링하고 사용자와 서버간의 HTTP 전송과는 별도로 웹어플리케이션과 상호 작용을 할 수 있다. 

 

참고

https://jieun0113.tistory.com/73

https://private.tistory.com/24

 

댓글