프라미스와 async, await 파트 정리
-
콜백
-
비동기 작업
-
JS 호스트 환경에서 제공하는 여러 함수 사용 시 비동기 동작 스케쥴링 가능
-
외부 스크립트의 코드 바로 호출 시 비동기 작업인 스크립트 불러오기가 비동기적으로 실행되기 떄문에 기다리지 않고 바로 실행돼 오류 발생
-
-
콜백 함수
-
새롭게 불러오는 스크립트에 있는 함수를 콜백 함수 안에서 호출함으로써 외부 스크립트 안의 함수 사용
-
콜백 함수의 인수로 전달된 함수(대게 익명 함수)는 원하는 동작(비동기 작업)이 완료 된 후 실행됨
-
‘오류 우선 콜백’
- 콜백 함수 인자에 에러 추가해서 스크립트 로딩 성공/실패에 따른 처리 방법 패턴
-
-
콜백 지옥(멸망의 피라미드)
- 콜백 중첩이 길어지는 패턴
-
-
프라미스
-
프라미스
-
‘제작 코드’ 와 ‘소비 코드’ 연결해 주는 특별한 JS 객체
-
new 생성자로 만들어지며 resolve, reject, excutor로 이루어짐
-
콜백과의 비교
-
프라미스
-
흐름이 자연스러우며 결과에 따라 그 다음에 무엇을 할 지에 대한 코드 작성
-
원하는 만큼 .then 호출 가능
-
-
콜백
-
함께 호출할 함수 준비되어야 함
-
핸들러 하나만 가능
-
-
-
excutor
-
프라미스가 만들어질 떄 자동으로 실행되며 결과 최종적으로 만들어 내는 제적 코드를 포함함
-
인수에 콜백(resolve, reject)넘길 시 하나는 반드시 호출해야 함
-
-
resolve, reject
-
JS가 자체적으로 제공하는 콜백
-
즉시 호출 가능
-
resolve(value)
- 일이 성공적으로 끝난 경우 그 결과를 나타내는 value와 함께 호출 됨
-
reject(error)
-
에러 발생 시 에러 객체를 나타내는 error와 함께 호출
-
에러 객체와 함께 사용하는 것 추런
-
-
-
promise 객체
-
프라미스 생성자가 반환하는 객체
-
state, result 프로퍼티 가짐
-
성공/실패 시 한번 변경되며 다시 변경할 수 없음
-
state
-
내부 상태를 나타내는 프로퍼티
-
처음엔 “pending”
-
resolve/reject 호출 시 “fullfilled”/”rejected” 로 변함
-
-
result
-
결과를 나타내는 프로퍼티
-
처음엔 “undefined”
-
resolve/reject 호출 시 exruter 내부의 resolve/reject의 인수값으로 변함
-
-
-
-
then, catch, finally
-
promise 객체에 접근하여 구독하고 상황에 맞는 처리하는 핸들러
-
처리된 프라미스의 핸들러는 즉각 실행됨
-
then
-
첫번째/두번째 인수는 프라미스가 이행/거부 됐을 때 (resolve/reject)됐을 떄 해당 값 인수로 받아서 실행 결과 받음
-
작업이 성공적으로 처리된 경우만 다루고 싶을 시 인수 하나만 전달하면 됨
-
-
catch
-
에러가 발생한 경우만 다룰 때 사용
-
then(null,f()) 와 같음
-
-
finally
-
인수 없음
-
절차를 마무리 하는 ‘보편적’ 작업 수행
-
프라미스 이행/거부 여부 알 수 없음
-
자동으로 다음 핸들러에 결과와 에러 전달
-
결과를 처리하기 위해 만들어진 용도가 아님
-
-
-