-
[Node.js] 3일차교육 2019. 8. 28. 00:19
수업 내용 정리
- Promise
- async/await콜백 함수
- 자바스크립트에서는 비동기 처리를 위해 콜백 함수 사용함
- 자바스크립트에서는 거의 대부분의 작업이 비동기로 동작함
- 비동기 처리의 단점은 실행 순서 파악이 어려움 (순서대로 처리되지 않을 수 있음)
- 따라서, 코드 실행 순서가 뒤죽박죽 될 수 있는데, 이럴 경우 콜백 함수를 이용해서 해결함
- 함수로부터 결괏값을 받지 않고, 결괏값을 이용해서 로직을 처리하는 콜백 함수를 넘김콜백 헬
- 비동기 처리를 위해 콜백 함수를 사용했더니, 콜백 헬이 등장
- 콜백 함수를 중첩하다 보니 계속해서 들여 쓰기 해야 해서 코드 가독성이 떨어짐
- 콜백 헬을 없애기 위해 Promise 등장
Promise
- Promise는 바로 당장 결과를 얻진 못하지만, 가까운 미래에는 얻을 수 있는 결괏값에 접근하는 메서드를 제공 (then, catch)
- 자바스크립트 비동기 처리에 사용되는 객체
- ES6에서 도입
- 콜백 함수를 넘기는 대신에 Promise 객체를 생성해서 리턴하고, 호출부에서는 리턴 받은 Promise 객체의 then( ), catch( ) 메서드로 결과 값에 접근
- 기존에 콜백 함수로 비동기 처리하던 방식과 가장 큰 차이점은 함수를 호출하면 Promise 타입의 결괏값이 리턴되고, 이 결괏값을 가지고 다음에 수행할 작업을 진행한다는 것
-여러개의 비동기 작업들이 모두 완료됐을 때 작업을 진행하고 싶다면, Promise.all API를 활용
Why사용
콜백 헬을 없애기 위해 등장
Promise의 3가지 상태
- Pending (대기) : 비동기 처리가 완료 안된 상태 (new Promise( )를 호출할 때)
- Fulfilled (이행) : 비동기 처리가 완료된 상태 (resolve( )를 호출할 때)
- Rejected (실패) : 비동기 처리가 실패하거나 오류가 난 상태 (reject( )를 호출할 때)async/await
- ES7(ES2017)에서 async/await 키워드 추가
- 동기 코드 처리 방식(함수 호출 후 결괏값을 변수에 할당하는 식으로)처럼 코드를 작성할 수 있음
- await 키워드는 Promise객체를 리턴하는 비동기 함수 앞에 사용 가능
- await는 async 키워드가 붙어있는 함수 내에서만 사용 가능
- 한 가지 주의할 점은 async 키워드가 붙어있는 함수를 호출하면 Promise 객체를 생성해서 리턴하지 않아도 Promise 객체가 리턴됨
- 예외 처리는 try/catch
참고
https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
자바스크립트 Promise 쉽게 이해하기
(중급) 자바스크립트 입문자를 위한 Promise 설명. 쉽게 알아보는 자바스크립트 Promise 개념, 사용법, 예제 코드. 예제로 알아보는 then(), catch() 활용법
joshua1988.github.io
'교육' 카테고리의 다른 글
[Node.js] 10일차 (0) 2019.09.25 [Node.js] 8일차 (2) 2019.09.18 [Node.js] 4일차 (0) 2019.09.11 [Node.js] 2일차 (0) 2019.08.23 [Node.js] 1일차 (0) 2019.08.21