Asynchronous & Promise

louis220·2021년 2월 3일
0

Synchronous(동기) : 요청을 보낸 후 응답을 받을 때 까지 기다리고, 응답을 받으면 다음 동작 실행
Asynchronous(비동기): 요청을 보낸 후 응답에 관계없이 다음 동작을 실행

Async의 순서를 제어하기 위해 Callback을 사용하게 되는데 콜백이 지나치게 많으면 Callback Hell 이 일어날 수도 있다


그렇기에 이런점을 보완하기 위해 Promise를 사용하게 된다

Promise가 일종의 Class라 생각하면 쉽다. new Promise()로 새로운 인스턴스를 만들어내게 되는데

Promise는 세가지 상태를 가진다

  • 대기(pending): 이행하거나 거부되지 않은 초기 상태.

  • 이행(fulfilled): 연산이 성공적으로 완료됨.

  • 거부(rejected): 연산이 실패함.

    	const example = () => {
        	return new Promise((resolve, reject) => {
                  if(true){
                    return resolve("success")
                      } else {
                      return reject("fail")
                  		}
                	})
                }
                
                example()
                .then(data => {
                console.log(data) // success
                })

    primise는 자체의 콜백(resolve, reject)를 갖는데 new Promise() 메서드를 호출하면 대기(Pending) 상태가 된다. 대기(pending)상태에서 이행(fulfilled)면 resolve를 거부(rejected)시 reject를 실행하게 된다
    resolve는 .then을 이용해 결과값을 받고 다음 task를 이어서 진행, rejecte는 .catch 로 에러핸들링을 할 수 있다

            	
profile
기록을 하자

0개의 댓글