-
비동기Javascript/Node.js 2020. 1. 6. 17:36
비동기
특정 코드의 연산이 끝날 때까지 코드의 실행을 멈추지 않고 다음 코드를 먼저 실행하는 처리방식이다. 이런 방식으로 구동할 경우, idle time이 사라져 컴퓨터 자원을 최대한 사용할 수 있어 효율적이다. 그러나, 프로그래머가 원하는 순서대로 실행되지 않는 문제점이 발생한다.
콜백함수
코드가 순서대로 실행되지 않는 문제를 해소하기 위해 콜백함수가 탄생했다. 식당을 예약하듯이 우선 A(자리에 착석)라는 작업이 끝나야 B(음식 주문)를 실행할 수 있도록 한다. 마치 함수 안의 인자 안에 함수를 심은 모양새이다.
Callback hell
callback hell 예시 위와 같은 형태를 callback hell이라고 부른다. 가독성이 떨어지고 로직을 변경하기 어렵다. 이를 해결하기 위한 두 가지 문법이 존재한다.
promise
promise 예시 promise는 pending, fulfilled, Rejected 총 3가지 상태가 존재한다.
Pending : 비동기 처리 로직이 아직 완료되지 않은 상태이다. new Promise() 메서드를 호출하면 이 상태가 된다.
fulfilled : 비동기 처리가 완료되어 결과값을 반환해준 상태이다. resolve()가 실행되면 이 상태가 된다. then()을 이용해서 결과값을 받을 수 있다.
rejected : 비동기 처리가 실패하거나 오류가 발생한 상태이다. reject()가 실행되면 이 상태가 된다. catch()를 이용해서 결과값을 받을 수 있다.
promise chaining
promise chaining 예시 여러 개 promise를 연결하여 사용할 수 있다. then을 이용해 연결한다.
async & await
async & await 예시 비동기 처리 패턴 중 가장 최근에 나온 문법이다. 동기 처리와 같이 코딩할 수 있고 가독성이 뛰어난 장점이 있다.
fetchUser 함수에 await를 붙이지 않으면 코드의 실행 순서를 보장 받을 수 없다.
출처
https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
자바스크립트 Promise 쉽게 이해하기
(중급) 자바스크립트 입문자를 위한 Promise 설명. 쉽게 알아보는 자바스크립트 Promise 개념, 사용법, 예제 코드. 예제로 알아보는 then(), catch() 활용법
joshua1988.github.io
Callback Hell
callbackhell.com
SOPT 25th Server Seminar PPT
'Javascript > Node.js' 카테고리의 다른 글
cookie & session (0) 2020.01.21 Node.js 란? (0) 2020.01.21 Passport (0) 2020.01.15 Single Thread (0) 2020.01.06 Routing (0) 2020.01.06