1)why promise?
-> js에선 많은 경우 비동기적인 작업이 필요합니다. 비동기적인 작업을 진행할 때, 작업간 순서가 보장되어야 하거나 여러 개의 비동기 작업을 동시에 수행해 효율적으로 작업을 진행하기 위해 promise가 필요합니다.
2)how promise?
const myPromise = new Promise((resolve, reject) => {
// 비동기 작업
if (/* 작업 성공 */) {
resolve(/* 결과 값 */);
} else {
reject(/* 오류 메시지 */);
}
});
promise 객체의 state는 pending, fulfilled, rejected 3가지 상태를 갖게 됩니다.
myPromise.then((result) => {
// 이행될 때 처리할 코드
}).catch((error) => {
// 거부될 때 처리할 코드
});
fulfilled 상태가 된다면, then이 실행되고, rejected된다면 catch가 실행됩니다.
3)promise.all
-> promise.all(iterable)은 여러 개의 promise 객체를 동시에 처리할 때 사용합니다. fulfilled된 promise는 배열로 리턴됩니다. 여러 개 중 하나라도 rejected된다면, 즉시 거부 상태가 됩니다.
4)promise.allSettled
-> 여러개의 promise들이 실패하든 성공하든, status값에 결과를 받아 배열로 리턴합니다.
5)async, await
->코드가 간결해지지만, try-catch()를 활용해 예외처리를 해줘야 합니다. 동기적인 흐름으로 개발을 가능하게 해줍니다.