비동기 프로그래밍 - Promise

이지영·2024년 8월 4일

promise?

비동기 처리에 사용되는 자바스크립트 객체
비동기 작업이 맞이할 성공 혹은 실패를 나타낸다。

하나의 상자라고 볼 수 있다.
비동기작업이 시작될 때 만들어지고 텅텅 비어있다가
비동기 작업이 완료될 때 작업에 대한 결과물로 상자가 채워진다.

Promise의 3가지 상태
- Pending 대기
- Fulfilled 성공
- Rejected 실패

new키워드를 사용해서 Promise를 해서 프로미스 객체가 생성되는 그 즉시
익시큐터 함수가 실행이된다.

따로 호출하지 않아도 된다.

resolve

- 익시큐터 안에서 호출해줄 수 있는 함수들이다.
- 하고자하는 비동기 작업이 성공하면 resolve를 호출해주면되고
- 실패하면 reject를 호출해주면 된다.
- 익시큐터에 인자로 들어오는 resolve는
- 비동기 작업이 완료되었다 라고 말해주는 함수이다.
- 비동기 작업이 완료된 후 resolve를 호출해주면 된다.

성공 딱지가 붙은 상자 안에 비동기 작업의 결과물인 data가 들어가있음

reject

- 비동기 작업이 실패하는 경우 reject()를 호출
- 리젝트 함수의 인자로는 비동기 작업이 왜 실패했는지 알려주는 에러 객체를 넣어주는게 보편적이다.

else {
	reject (new Error("네트워크 문제!"))
}

즉 실패딱지가 붙은 상자에 에러가 들어가있다고 생각하면된다.

new키워드를 사용해서 Promise를 해서 프로미스 객체가 생성되는 그 즉시
익시큐터 함수가 실행이된다.
하지만 함수가 호출되면 실행하고 싶게 만들고 싶다면

function getData() {
	// 여기
  	const promise = new Promise((resolve, reject) => {
    ............. 코드 ..........
    });
    return promise
}

안에 promise객체를 만들어주면,
함수가 호출되면 프로미스 객체가 만들어지고,
익시큐터가 호출이 되면서 비동기 작업이 시작된다.

promise를 리턴해주는 이유는 우리가 만든 getData함수를 호출하는 입장에서 비동기 작업이 어떻게 진행되고 있는지 알아야하기 때문
비동기 작업이 아직 진행중인지 성공했는지 실패했는지 확인할 수 있다。

0개의 댓글