상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Promise란 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Promise는 <a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트에서 <a href='https://sangseek.com/sangseeks/비동기/ko'>비동기</a> 작업을 처리하기 위한 객체입니다. 비동기 프로그래밍은 웹 애플리케이션에서 매우 중요한 개념으로, 사용자 인터페이스가 차단되지 않고 동시에 여러 작업을 수행할 수 있게 해줍니다. Promise는 이러한 비동기 작업의 결과를 나타내며, 성공적으로 완료되었는지 또는 실패했는지를 추적할 수 있도록 도와줍니다. Promise의 기본 개념 Promise는 세 가지 상태를 가질 수 있습니다: 1. 대기(Pending) : 초기 상태로, 비동기 작업이 아직 완료되지 않았음을 나타냅니다. 2. 이행(Fulfilled) : 비동기 작업이 성공적으로 완료되었음을 나타내며, 이 상태에서는 결과값을 포함합니다. 3. 거부(Rejected) : 비동기 작업이 실패했음을 나타내며, 이 상태에서는 오류 정보를 포함합니다. 이러한 상태는 비동기 작업이 진행되는 동안 변화할 수 있으며, Promise는 이 상태 변화에 따라 적절한 처리를 할 수 있도록 메서드를 제공합니다. Promise의 생성 Promise는 `Promise` 생성자를 사용하여 생성할 수 있습니다. 이 생성자는 두 개의 인자를 받는 함수를 인자로 받으며, 이 함수는 비동기 작업을 수행합니다. 이 함수 내에서 비동기 작업이 성공하면 `resolve` 함수를 호출하고, 실패하면 `reject` 함수를 호출합니다. ```javascript const myPromise = new Promise((resolve, reject) => { // 비동기 작업 수행 const success = true; // 예시를 위한 변수 if (success) { resolve("작업이 성공적으로 완료되었습니다."); } else { reject("작업이 실패했습니다."); } }); ``` Promise의 사용 Promise는 `then`, `<a href='https://sangseek.com/sangseeks/catch/ko'>catch</a>`, `finally` 메서드를 사용하여 결과를 처리할 수 있습니다. - then() : Promise가 이행되었을 때 호출되는 메서드입니다. 이행된 값은 `then`의 인자로 전달됩니다. - catch() : Promise가 거부되었을 때 호출되는 메서드입니다. 거부된 이유는 `catch`의 인자로 전달됩니다. - finally() : Promise가 이행되거나 거부된 후에 항상 호출되는 메서드입니다. 이 메서드는 결과와 상관없이 실행됩니다. ```javascript myPromise .then(<a href='https://sangseek.com/sangseeks/result/ko'>result</a> => { console.log(result); // "작업이 성공적으로 완료되었습니다." }) .catch(error => { console.error(error); // "작업이 실패했습니다." }) .finally(() => { console.log("비동기 작업이 완료되었습니다."); }); ``` Promise의 체이닝 Promise는 체이닝이 가능하여, 여러 비동기 작업을 순차적으로 실행할 수 있습니다. 각 `then` 메서드는 새로운 Promise를 반환하므로, 다음 `then` 메서드는 이전 `then`의 결과를 사용할 수 있습니다. ```javascript myPromise .then(result => { console.log(result); return "다음 작업으로 진행합니다."; }) .then(nextResult => { console.log(nextResult); }) .catch(error => { console.error(error); }); ``` Promise.all과 Promise.race Promise를 다룰 때 유용한 메서드로 `Promise.all`과 `Promise.race`가 있습니다. - Promise.all : 여러 개의 Promise를 동시에 실행하고, 모든 Promise가 이행될 때까지 기다립니다. 모든 Promise가 성공적으로 이행되면 결과 배열을 반환하고, 하나라도 거부되면 즉시 거부됩니다. ```javascript const promise1 = Promise.resolve(3); const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 100, 'foo')); const promise3 = 42; Promise.all([promise1, promise2, promise3]) .then(values => { console.log(values); // [3, "foo", 42] }); ``` - Promise.race : 여러 개의 Promise 중 가장 먼저 이행되거나 거부된 Promise의 결과를 반환합니다. ```javascript const promise1 = new Promise((resolve, reject) => setTimeout(resolve, 500, '첫 번째')); const promise2 = new Promise((resolve, reject) => setTimeout(resolve, 100, '두 번째')); Promise.race([promise1, promise2]) .then(value => { console.log(value); // "두 번째" }); ``` 결론 Promise는 자바스크립트에서 비동기 작업을 보다 쉽게 관리할 수 있는 강력한 도구입니다. 비동기 작업의 결과를 추적하고, 체이닝을 통해 여러 작업을 순차적으로 처리할 수 있으며, `Promise.all`과 `Promise.race`와 같은 메서드를 통해 여러 Promise를 동시에 관리할 수 있습니다. 이러한 기능들은 현대 웹 개발에서 비동기 프로그래밍을 보다 직관적이고 효율적으로 만들어 줍니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기