콜백 지옥: 두 판 사이의 차이

(새 문서: callback hell == 개요 == 콜백 지옥은 JavaScript를 이용한 비동기 프로그래밍시 발생하는 문제로서, 함수의 매개 변수로 넘겨지는 콜백 함...)
태그: 분류가 필요합니다!
 
편집 요약 없음
44번째 줄: 44번째 줄:
});
});
</source>
</source>
== 해결 방안 ==
=== 동기 함수를 사용한다 ===
=== 콜백 함수를 분리한다 ===
=== Async 모듈 사용 ===
=== Promise 패턴 도입 ===
=== Async-Await ===
[[분류:프로그래밍]]

2016년 9월 1일 (목) 21:38 판

callback hell

개요

콜백 지옥은 JavaScript를 이용한 비동기 프로그래밍시 발생하는 문제로서, 함수의 매개 변수로 넘겨지는 콜백 함수가 반복되어 코드의 들여쓰기 수준이 감당하기 힘들 정도로 깊어지는 현상을 말한다.

step1(function (value1) {
    step2(function (value2) {
        step3(function (value3) {
            step4(function (value4) {
                step5(function (value5) {
                    step6(function (value6) {
                        // Do something with value6
                    });
                });
            });
        });
    });
});

step1에서 어떤 처리 (주로 입출력) 이후 그 결과를 받아와, 인자로 전달된 익명 함수의 매개변수로 넘겨준다. 이후 step2에서 또 어떤 처리를 하고, 다음 익명 함수가 실행된다. 이를 반복하다보면 코드가 위에서 아래가 아니라 기묘한 피라미드 모양으로 기술되게 된다. 여기서 에러 처리가 포함되면 더욱 가관이다.

step1(function (err, value1) {
    if (err) {
        console.log(err);
        return;
    }
    step2(function (err, value2) {
        if (err) {
            console.log(err);
            return;
        }
        step3(function (err, value3) {
            if (err) {
                console.log(err);
                return;
            }
            step4(function (err, value4) {
                // 정신 건강을 위해 생략
            });
        });
    });
});

해결 방안

동기 함수를 사용한다

콜백 함수를 분리한다

Async 모듈 사용

Promise 패턴 도입

Async-Await