비동기 처리의 경우 Web API로 들어오는 요청 순서가 아닌, 작업이 완료되는 순서에 따라 처리된다는 특징이 있다.
이 경우 실행과정을 예상할 수 없어 코드의 실행 순서가 불명확해진다는 단점이 생김.
이 경우 Callback 함수를 사용하면 순서를 명확히 할 수 있음
step1(function (value1) {
step2(function (value2) {
step3(function (value3) {
step4(function (value4) {
step5(function (value5) {
step6(function (value6) {
// Do something with value6
});
});
});
});
});
});
new Promise(function(resolve, reject) {
// 비동기 작업 수행
if (성공) {
resolve(result); // 작업 완료 후 이행 상태로 전환
} else {
reject(error); // 작업 실패 후 거부 상태로 전환
}
})
.then(function(result) {
...
})
.catch(function(error) {
...
})
then(callback)
catch(callback)