백엔드
[JavaScript] 동기? 비동기?
_민영
2023. 4. 6. 23:57
< 동기 방식 >
> 요청과 결과가 동시에 일어나는 방식으로, 요청을 보낸 후 응답을 받아야 다음 동작이 진행된다.
- 요청과 결과가 한 자리에 동시에 나타나는 것으로, 요청을 하면 시간이 얼마나 걸리든지 요청한 자리에서 결과가 주어져야 한다.
- A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞춘다.
- 추구하는 같은 행위(목적)가 동시에 이루어진다.
> 장점
- 순서에 맞춰 진행된다.
- 설계가 간단하다.
- 직관적이다.
> 단점
- 여러 가지 요청을 동시에 처리할 수 없다.
- 요청에 대한 결과가 반환되기 전까지 대기해야 한다.
< 비동기 방식 >
> 요청과 결과가 동시에 일어나지 않는 방식으로, 요청과 결과가 동시에 일어나지 않는다.
- 요청한 곳에 결과가 나타나지 않으며, 하나의 요청에 따른 응답을 즉시 처리하지 않아도 그 대기 시간 동안 또 다른 요청에 대해 처리가 가능한 방식이다.
- 노드 사이의 작업 처리 단위를 동시에 맞추지 않아도 된다.
- 추구하는 행위(목적)가 다를 수 있고, 동시에 이루어지지도 않는다.
> 장점
- 요청에 대한 결과가 반환되기 전에 다른 작업을 수행할 수 있어서 자원을 효율적으로 사용할 수 있다.
> 단점
- 동기보다 설계가 복잡하다.
- 논증적이다.
< JavaScript 동기? 비동기? >
> 자바스크립트는 싱글 스레드 언어이다.
- 따라서 자바스크립트는 한 번에 한 가지 작업밖에 수행하지 못한다.
- 그래서 자바스크립트로 코드를 구동하면 순차적으로 일어나게 된다. (동기)
- 많이 무거운 작업을 수행 중일 때는 그 뒤의 어떤 작업도 진행되지 않기 때문에 화면 로딩, 통신 연결 등의 비효율을 높이고 사용성 또한 급격히 떨어진다. 그리고 오늘날같이 엄청나게 많은 이미지와, 엄청나게 많은 데이터를 갖고 있는 웹페이지를 실행시킬 때 이러한 단점은 더욱 부각된다.
-> 엄청난 용량의 정보를 갖고 있는 현대 웹페이지를 보다 유동적으로, 효율적으로 움직이게 하기 위해서는 비동기적 프로그래밍이 필요하다.
< JavaScript로 비동기 프로그래밍 하기>
자바스크립트는 싱글 스레드 언어지만 위와 같이 현대 웹 환경에 적응하기 위해 비동기적 프로그래밍을 구현할 수 있도록 다양한 방법을 제공하고 있다.
> callback 함수
JavaScript callback 함수
< callback 함수 > > 콜백 함수란 파라미터로 함수를 전달받아 함수의 내부에서 실행하는 함수이다. 매개변수로 넘겨받은 함수는 일단 넘겨받고, 때가 되면 나중에 호출(callback)한다는 것이 콜백 함
m1nomi.tistory.com
> Promise
JavaScript promise
< promise > 자바스크립트는 비동기 처리를 위해 콜백 함수를 사용하지만, 콜백을 남용하게 되면 콜백 지옥에 빠질 수 있다. 에러 처리도 힘들 뿐더러 여러 개의 비동기 처리를 한 번에 하는 데 한
m1nomi.tistory.com
> async/await
JavaScript async/await
< async와 await > async와 await라는 특별한 문법을 사용하면 Promise를 좀 더 편하게 사용할 수 있다. > async async는 function 앞에 위치한다. async function func() { return 1; } function 앞에 async를 붙이면 해당 함수
m1nomi.tistory.com