Home / AI / AI 용어사전 / Promise — 비동기 코드를 깔끔하게 처리하는 자바스크립트 약속
TERM
Promise — 비동기 코드를 깔끔하게 처리하는 자바스크립트 약속
On this page
AI API를 호출할 때 응답이 곧바로 오지 않는다. 서버에 요청을 보낸 뒤 결과가 돌아올 때까지 기다려야 한다. 이 '미래에 완료될 작업'을 코드에서 다루는 도구가 바로 Promise다.
정의
Promise는 자바스크립트에서 비동기 작업의 결과를 나타내는 객체다. '지금 당장은 모르지만, 나중에 성공(resolved)하거나 실패(rejected)할 것이다'라는 약속을 코드로 표현한다. 동기 코드처럼 순서대로 실행되지 않는 작업(네트워크 요청, 파일 읽기, AI api 호출)을 체계적으로 처리할 때 사용한다.
Promise는 세 가지 상태를 가진다:
- Pending: 아직 결과를 알 수 없는 초기 상태
- Fulfilled: 작업이 성공적으로 완료된 상태
- Rejected: 작업이 실패한 상태
then·catch 체이닝
Promise는 .then()과 .catch()를 연결(chain)해 결과를 처리한다.
fetch('https://api.anthropic.com/v1/messages', {
method: 'POST',
headers: { 'x-api-key': process.env.ANTHROPIC_API_KEY },
body: JSON.stringify({ model: 'claude-sonnet-4-6', max_tokens: 1024, messages: [...] })
})
.then(response => response.json()) // 응답을 JSON으로 변환
.then(data => console.log(data)) // 변환된 데이터 사용
.catch(error => console.error(error)); // 에러 처리각 .then()은 이전 단계의 결과를 받아 다음 작업을 수행한다. .catch()는 체인 중 어느 단계에서든 발생한 에러를 잡는다.
async/await와의 관계
async/await는 Promise를 더 읽기 쉽게 만드는 문법적 설탕(syntactic sugar)이다. Promise 자체를 대체하는 것이 아니라, Promise를 사용하는 방식을 동기 코드처럼 보이게 작성할 수 있게 해준다.
async function callClaudeAPI(prompt) {
try {
const response = await fetch('https://api.anthropic.com/v1/messages', {
method: 'POST',
headers: {
'x-api-key': process.env.ANTHROPIC_API_KEY,
'anthropic-version': '2023-06-01',
'content-type': 'application/json'
},
body: JSON.stringify({
model: 'claude-sonnet-4-6',
max_tokens: 1024,
messages: [{ role: 'user', content: prompt }]
})
});
const data = await response.json();
return data.content[0].text;
} catch (error) {
throw new Error(`API 호출 실패: ${error.message}`);
}
}await 키워드는 Promise가 완료될 때까지 해당 함수의 실행을 일시 중단한다. async 함수는 항상 Promise를 반환한다.
Promise.all — 여러 AI API 병렬 호출
여러 AI api를 동시에 호출하고 모든 결과가 준비됐을 때 처리하려면 Promise.all()을 사용한다.
const [newsAnalysis, summaryResult, translationResult] = await Promise.all([
analyzeWithClaude(newsText),
summarizeWithGemini(newsText),
translateWithDeepL(newsText)
]);Promise.all()은 배열 안의 모든 Promise가 fulfilled 상태가 되면 결과 array를 반환한다. 하나라도 rejected되면 전체가 rejected된다. 순차 처리 대비 총 대기 시간을 크게 줄일 수 있다.
Promise.allSettled()는 일부가 실패해도 나머지 결과를 모두 수집할 때 사용한다. AI API 중 일부가 간헐적 오류를 낼 수 있는 환경에서 유용하다.
관련 용어
- async-await — Promise를 동기 코드처럼 작성하는 문법
- callback — Promise 이전에 비동기를 처리하던 방식
- api — Promise가 가장 많이 쓰이는 네트워크 요청 컨텍스트
- javascript — Promise가 내장된 언어
- array — Promise.all에서 결과를 담는 데이터 구조
백링크
이 문서를 참조하는 다른 페이지입니다.