상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
싱가포르에는 몇 개의 섬이 있나요?
싱가포르에서 한국 음식점은 얼마나 있는가요?
싱가포르의 유명한 시장은 어디인가요?
싱가포르의 기념일에는 어떤 것들이 있나요?
오징어의 종류에는 어떤 것들이 있나요?
오징어를 선택할 때 고려해야 할 점은 무엇인가요?
오징어의 개체 수 감소 원인은?
콜럼비아 대학교의 최신 기술 관련 연구는 무엇인가요?
오렌지 껍질을 사용하여 차를 끓이는 방법은?
간 건강을 위한 영양소 결핍 시 나타나는 증상은 어떤 것이 있나요?
간 건강을 위해 섭취해야 할 오메가-3 지방산의 효과는 무엇인가요?
간 건강과 간세포 재생의 과학은 무엇인가요?
Previous
Next
수정하기 - 비동기 프로그래밍에서 'promise.allSettled'의 사용법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
`<a href='https://sangseek.com/sangseeks/Promise/ko'>Promise</a>.allSettled`는 JavaScript의 비동기 프로그래밍에서 여러 개의 Promise를 동시에 처리할 때 유용하게 사용되는 메서드입니다. 이 메서드는 주어진 모든 Promise가 완료될 때까지 기다린 후, 각 Promise의 결과를 <a href='https://sangseek.com/sangseeks/배열/ko'>배열</a> 형태로 반환합니다. 이때 각 Promise의 결과는 성공 여부와 관계없이 포함되며, 성공한 경우에는 해당 값이, 실패한 경우에는 오류 정보가 포함됩니다. 사용법 `Promise.allSettled`의 기본적인 사용법은 다음과 같습니다: ```javascript const promise1 = Promise.resolve(3); const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, 'error')); const promise3 = Promise.resolve(42); Promise.allSettled([promise1, promise2, promise3]) .then((results) => { results.forEach((result) => { if (result.status === '<a href='https://sangseek.com/sangseeks/fulfilled/ko'>fulfilled</a>') { console.log(`Result: ${result.value}`); } else { console.log(`Error: ${result.reason}`); } }); }); ``` 설명 1. Promise 배열 : `Promise.allSettled`는 Promise 객체의 배열을 인자로 받습니다. 이 배열에 포함된 모든 Promise가 완료될 때까지 기다립니다. 2. 결과 처리 : 모든 Promise가 완료되면, `then` 메서드의 콜백 함수가 호출됩니다. 이 콜백 함수의 인자로는 각 Promise의 결과를 담고 있는 배열이 전달됩니다. 3. 결과 형식 : 반환된 배열의 각 요소는 객체 형태로, `status`와 `value` 또는 `reason` 속성을 가집니다. - `status`: Promise의 상태를 나타내며, `'fulfilled'` 또는 `'<a href='https://sangseek.com/sangseeks/rejected/ko'>rejected</a>'` 중 하나입니다. - `value`: Promise가 성공적으로 완료된 경우의 결과 값입니다. - `reason`: Promise가 실패한 경우의 오류 정보를 담고 있습니다. 예제 다음은 여러 개의 비동기 작업을 처리하는 예제입니다: ```javascript const fetchData1 = () => new Promise((resolve) => setTimeout(() => resolve('Data 1'), 1000)); const fetchData2 = () => new Promise((resolve, reject) => setTimeout(() => reject('Error fetching data 2'), 2000)); const fetchData3 = () => new Promise((resolve) => setTimeout(() => resolve('Data 3'), 1500)); Promise.allSettled([fetchData1(), fetchData2(), fetchData3()]) .then((results) => { results.forEach((result) => { if (result.status === 'fulfilled') { console.log(`Success: ${result.value}`); } else { console.log(`Failure: ${result.reason}`); } }); }); ``` 장점 - 모든 <a href='https://sangseek.com/sangseeks/결과 수집/ko'>결과 수집</a> : `Promise.allSettled`는 모든 Promise의 결과를 수집할 수 있기 때문에, 일부 Promise가 실패하더라도 나머지 Promise의 결과를 안전하게 처리할 수 있습니다. - 비동기 작업의 병렬 처리 : 여러 비동기 작업을 동시에 실행하고, 모든 작업이 완료될 때까지 기다릴 수 있습니다. 주의사항 - `Promise.allSettled`는 모든 Promise가 완료될 때까지 기다리므로, 일부 Promise가 실패하더라도 전체 작업이 중단되지 않습니다. 이는 `Promise.all`과의 주요 차이점입니다. `Promise.all`은 하나라도 실패하면 즉시 실패로 간주하고, 나머지 Promise의 결과를 기다리지 않습니다. - 반환된 결과를 처리할 때, 각 Promise의 상태를 확인하여 적절한 로직을 구현해야 합니다. 이와 같이 `Promise.allSettled`는 비동기 프로그래밍에서 여러 Promise의 결과를 안전하게 처리할 수 있는 강력한 도구입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기