[Javascript] 콜백
콜백, callback, 콜백 함수, callback function, JavaScript callback, JS callback
- 콜백 (callback): 다른 함수의 인자로 넘겨져, 받은 쪽이 적절한 시점에 호출하는 함수. 일급 함수 (일급 함수) 가 있어야 가능한 패턴이라 JavaScript 에서는 자연스럽다.
- 비동기 결과를 전달하는 가장 원시적인 방법이다.
setTimeout(fn, 100)의fn, DOM 의addEventListener('click', fn), Node.js 의fs.readFile(path, fn)모두 콜백.
에러 우선 콜백 (error-first callback)
Node.js 가 정착시킨 관행. 첫 인자는 에러 (없으면 null), 두 번째 인자는 결과.
fs.readFile('config.json', (err, data) => {
if (err) return console.error(err);
console.log(data.toString());
});
함정
- 콜백 지옥: 순차 의존 비동기를 연결하면 들여쓰기가 오른쪽 끝까지. (콜백 지옥 참고)
- 인버전 오브 컨트롤: 호출 시점·횟수·예외 처리 방식이 모두 받는 쪽 책임. 호출자가 안 부를 수도, 두 번 부를 수도, 동기로 부를 수도 있다.
- 에러 전파 불가: 콜백이 호출되는 시점에는 등록한 콜 스택이 사라졌으므로
try/catch가 통하지 않는다.
이 문제들을 풀기 위해 Promise 가 도입되었다.
참고
이 글의 용어 (3개)
- [Javascript] 콜백 지옥javascript
- - 콜백 지옥 (callback hell) 또는 둠 피라미드 (pyramid of doom): 순차 의존이 있는 비동기 작업을 으로 연결할 때 들여쓰기가 오른쪽으로 깊어지는 현상…
- [Javascript] Promisejavascript
- 정의 Promise 는 미래의 어떤 시점에 결정될 값을 나타내는 객체다. ECMAScript 2015 (ES6) 에 도입되어 기반 비동기의 가독성과 에러 처리 문제를 해결했다. …
- 일급 함수javascript
- - 함수를 값처럼 다루어 변수에 담거나 다른 함수의 인자로 전달하거나 함수의 반환값으로 사용할 수 있는 함수. 일급 함수의 이러한 특성을 활용하여 를 구현할 수 있습니다. - 함…
💬 댓글