처음 봤을때 잠깐 생소했던 resolve, reject에 대해 정리해보려 한다.
비동기 처리를 하면 Promise
를 맞이하게 된다.
대부분은 promise.then(result => {성공하면 돌아갈 코드}
형식으로 사용을 하면서 then에 친숙해진다.
하지만 다른 오픈소스를 보다가 다른 형태를 보았는데 new Promise((resolve, reject) => {})
형태가 존재한다.
다음과 같은 형태로 예시를 들어보자
// Callback 방식
function test (callback) {
if(조건) {
callback(new Error('에러'), undefined);
return;
}
callback(undefined, '성공');
}
// Promise 방식
new Promise((resolve, reject)=>{
if(조건) {
resolve('성공');
}
reject('실패');
})
위에 예시를 보면 첫번째는 콜백 방식이고, 콜백 방식이 성공
/실패
를 구분할때 인자의 위치
를 사용한다.
다음 Promise 방식을 살펴보면, 비동기 작업의 처리 과정에서 2개의 인자로 성공
/실패
를 구분한다.
다음은 오픈소스를 참고하면서 내가 보게되었던 구조였다.
만나면 당황하지 말자
function process(file) {
new Promise(function (resolve, reject) {
// 첫번쨰 처리내용
resolve('result1');
})
.then(function (result1) {
return new Promise(function (resolve, reject) {
resolve('result2');
});
})
.then(function (result2) {
return new Promise(function (resolve, reject) {
resolve('result3');
});
})
.then(function (result3) {
//마지막 처리 완료
});
}