처음 봤을때 잠깐 생소했던 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) {
//마지막 처리 완료
})
}