Promise란 코드에서 바로 값을 return 하지 않는 대신 promise를 return 하여 최종적으로 나중에 값을 제공하는 것을 뜻합니다.
그렇다면 이 Promise는 어디서 사용할까요? 나중에 값을 제공한다니 떠오르는게 하나 았지 않으신가요?
네. 바로 HTTP 호출을 했을 때 입니다. 물론 HTTP 호출할 때 외에도 여러 방면에서 Promise를 쓰긴 하지만 일반적으로 가장 많이 사용하는 곳은 HTTP 호출할 때입니다.
JavaScript에서 promise는 비동기이기 때문에 해결 또는 끝내는데 시간이 걸립니다. 하지만 JS 엔진인 promise가 끝날때까지 기다리지 않고 다른 코드들을 실행합니다.
그래서 promise가 최종적으로 값을 return 하기 전까진 pending 상태가 return 되고 JS 엔진은 다른 코드들을 실행하게 됩니다.
* Promise는 다음 중 하나의 상태를 가집니다.
- 대기(pending): 이행하지도, 거부하지도 않은 초기 상태.
- 이행(fulfilled): 연산이 성공적으로 완료됨.
- 거부(rejected): 연산이 실패함.
* Promise 예시(then, catch메소드 사용)
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(‘300ms 뒤에 값을 return 합니다.’);
}, 300);
});
myPromise
.then(value => { console.log(value) })
.catch(error => { console.error(‘error : ‘ + error) });
* Promise 단점: depth가 깊어지게 된다. =>이를 해결하기 위해 나타난 것이 async/await
아래 블로그에서 발췌한 내용인데 코드 예시랑 더 자세히 나와있어서 참고하면 좋다.
'JavaScript' 카테고리의 다른 글
[JS] 로컬 서버 http https로 변경하기 (0) | 2024.06.07 |
---|---|
[JavaScript] 객체의 key 와 value 가져오기 (0) | 2023.04.07 |
[JavaScript] 입력한 숫자에 따라 배열을 생성하는 함수 만들기 (0) | 2023.03.31 |
[Javascript] 객체(object)의 키(key)와 값(value)을 배열로 얻기 (0) | 2023.03.27 |
[Javascript] 심볼(Symbol) (feat. 객체 key) (0) | 2023.03.27 |