✅ 비동기 제어하기
Promise
"Promise는 프로미스가 생성될 때 꼭 알 수 있지는 않은 값을 위한 대리자로, 비동기 연산이 종료된 이후의 결과값이나 실패 이유를 처리하기 위한 처리기를 연결할 수 있도록 합니다. 프로미스를 사용하면 비동기 메서드에서 마치 동기 메서드처럼 값을 반환할 수 있습니다.
다만 최종 결과를 반환하지는 않고, 대신 프로미스를 반환해서 미래의 어떤 시점에 결과를 제공합니다.
간단히 말하면 비동기 처리에서 사용하는 객체다.
Promise는 다음 중 하나의 상태를 가집니다.
- 대기(pending): 이행하지도, 거부하지도 않은 초기 상태.
- 이행(fulfilled): 연산이 성공적으로 완료됨.
- 거부(rejected): 연산이 실패함.
대기(pending)
new Promise(executor) 함수를 실행하면 프로미스 객체가 생성되고 대기(pending)상태가 된다.
Promise 생성자 함수는 매개변수로 콜백 함수를 받고, 콜백 함수는 매개변수로 2개의 함수(resolve, reject)를 받는다.
resolve 함수는 비동기 작업을 성공적으로 완료해 결과를 값을 반환할 때 호출하고,
reject 함수는 작업이 실패하여 오류의 원인을 반환할 때 호출한다.
이행(fulfilled)
resolve 함수를 실행하면 이행(fulfilled)상태가 된다.
이행(fulfilled) 상태가 되면 then 메서드가 있는 경우, 반환된 프로미스는 then 메서드를 따라가서 결과값을 받을 수 있다.
따라서 위 코드를 실행하면 3초 간격으로 밑에와 같은 결과가 출력된다.
거부(rejected)
resolve 함수를 실행하면 거부(rejected)상태가 되며, 위 코드를 실행하면 결과값은 "error" 가 나온다.
catch를 사용해서 에러를 핸들링 할 수 있다.
then을 사용해서 에러를 핸들링 할 경우 오류를 제대로 잡지 못하는 경우가 발생하므로
가급적이면 catch를 사용하는게 좋다.
'JavaScript' 카테고리의 다른 글
[JavaScript] ' == '와 ' === ' 의 차이점을 알아보자 (0) | 2023.08.14 |
---|---|
[JavaScript] - 고차함수 (0) | 2023.04.25 |
[Javascript] 콜백함수와 비동기 처리 part1 (1) | 2023.03.21 |
[JavaScript] - 프로토타입과 클래스를 알아보자! (0) | 2023.03.15 |
[JavaScript] - 객체 지향 프로그래밍란? (0) | 2023.03.15 |