[javascript] Promise (1)

ChanSol Jeong·2023년 7월 10일
0

javascript

목록 보기
5/9
post-thumbnail

개요

javascript에서는 Promise를 통하여 비동기 작업을 수행할 수 있다.

일반적으로 Promise를 사용하는 함수는 다음과 같은 구조를 가진다

function returnPromise () {
    return new Promise((resolve,reject) => {
      try{
      	resolve("성공");
      }catch(error){
		reject("실패");
      }
    })
}

New Promise() 생성자는 resolvereject를 매개변수로 받는 콜백함수를 매개변수로 받는데

여기에 성공시 resolve에, 실패시 reject에 값을 담아 전달해준다.

resolve에 담긴 값은 .then 절에서, reject에 담긴 값은 .catch절에서 사용할 수 있다.

외부에서 resolve를 지정해주는 방식

다음과 같은 함수가 있다고 하자

let outsideResolve = null;
function returnPromise (){
    return new Promise((resolve,_) => {
      outsideResolve=resolve;
    })
}

해당 함수를 포함한 함수를 실행한다.

const func = async () =>{
	let response = await returnPromise();
  	console.log(response);
}
func();

결과는 어떻게 될까?

console.log(response)는 실행되지 않는다.

왜냐하면 returnPromiseresolve값이 전달되지 않았기 때문이다.


그러면 이 상황에서 outsideResolve는 어떤 상태일까?

outsideResolvereturnPromiseresolve가 할당된 상태이다.

이때 outsideResolve에 값을 할당해주면 func 내부의 멈춰있던 함수가 실행된다.

const func = async () =>{
	let response = await returnPromise();
  	console.log(response);
}
func();
outsideResolve("외부 Resolve값 할당");
// 외부 Resolve값 할당

javascript에서 어떻게보면 기본이라고 할 수 있는 Promise에 대하여 제법 알고있다고 생각하였는데

찾아보다보니 생각지도 못한 사용방법들이 있어서 아직 공부할게 많다고 느껴진다.

profile
Compostion API 맛있다!

0개의 댓글