728x90

동기처리

순차적으로 실행됨을 의미한다.

요청하면 응답할 때까지 다른 걸 실행하지 않고 기다린다. 

(요청과 응답이 동시에 이뤄진다는 뜻.

주문을 예시로 많이 드는데 떡볶이를 주문하고 떡볶이가 나올 때까지 다른 손님들이 순서대로 줄이 서있다고 상상하면 된다.)

 

 

비동기 처리 

동시다발적으로 병렬적으로 실행됨을 의미한다.

요청과 응답이 함께 이뤄지지 않는다.

요청하고 응답을 기다리지 않고 다른 요청들을 한다.

 

 

값을 받아오고 사용할 때 

값이 받아오기도 전에 함수가 실행되는 걸 막기 위해서

동기처리로 해결한다. 

 

 

그럼 자바스크립트 언어는 동기적 언어인가?

비동기적 언어라고 생각하기 쉬운데

(왜냐면 사실 내가 코드짤 때 병렬적으로 이뤄지는 함수를 동기처리, 순차적으로 실행되게 바꾸게 되니까...  비동기적 언어인가 싶었음 )

 

자바스크립트는 동기적 언어이다.

 

하지만! 

자바스크립트를 브라우저에서 구동되고 이때 비동기적으로 이뤄진다. 

 

 

 

Event Loop를 포함해 Browser의 구성요소 역할을 이해했다면, 자바스크립트 언어 자체가 비동기 특성을 제공하는게 아니라 Browser의 구성 요소들이 제공한다는 사실을 이해할 수 있다.

...

그러면 우리가 만든 프로그램의 코드를 실행하라고 JS엔진에게 명령하는 것은 누구일까? 실제로 JS엔진은 고립되어서 수행되는 것이 아니고 호스팅 환경 내에서 수행된다. 대부분의 개발자들에게 이것은 웹 브라우저 혹은 Node.js일 것이다.  이러한 모든 환경에서 적용되는 최대공약수는 호스팅 환경에 내장된 메커니즘인 이벤트루프이다.. 이것은 시간의 흐름에 따라 코드의 수행을 처리하며 그 때마다 JS엔진을 작동시키게된다. 따라서 이벤트루프라는 호스팅 환경 내의 메커니즘으로 인해, JS엔진에게 비동기적 수행을 명령하게 되고, JS가 비동기적으로 실행되게 되는 것이다.


출처: https://hazel-developer.tistory.com/179#recentComments

 

async await 쓰면

비동기처리를 마치 동기처리처럼 보이게 할 수 있다.

 

 

await  키워드는 async 키워드가 붙어있는 함수 내부에서만 사용할 수 있으며 비동기 함수가 리턴하는 Promise로 부터 결과값을 추출해줍니다. 즉, await 키워드를 사용하면 일반 비동기 처리처럼 바로 실행이 다음 라인으로 넘어가는 것이 아니라 결과값을 얻을 수 있을 때까지 기다려줍니다. 따라서 일반적인 동기 코드 처리와 동일한 흐름으로 (함수 호출 후 결과값을 변수에 할당하는 식으로) 코드를 작성할 수 있으며, 따라서 코드를 읽기도 한결 수월해집니다.
출처: https://www.daleseo.com/js-async-async-await/

 

 

찾아 읽다 보니 

JS를 비동기적으로 실행하게 해주는 대표적인 방식으로 Callback / Promise / Async & Await 가 있다.

async await를 쓰면 비동기인데 동기적으로 처리한다~라고 이해하면 되겠다.

 

callback

promise

 

 

async/await의 목적은 프로미스의 이용을 쉽게하는 것입니다.
출처: https://engineering.huiseoul.com/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9E%91%EB%8F%99%ED%95%98%EB%8A%94%EA%B0%80-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%EB%A3%A8%ED%94%84%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%98-%EB%B6%80%EC%83%81-async-await%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%BD%94%EB%94%A9-%ED%8C%81-%EB%8B%A4%EC%84%AF-%EA%B0%80%EC%A7%80-df65ffb4e7e
 

Medium

$150,000 Amazon Engineer vs. $300,000 Google Engineer

engineering.huiseoul.com

 

이거 다시 읽어보자..일단 자고 내일 마저 수정해야지..

 

promise 와 callback차이도 봐야겠엉

728x90

+ Recent posts