본문으로 건너뛰기
김신건의 로그

[Javascript] 콜백

· 수정 · 📖 약 1분 · 307자/단어 #javascript #async #function
콜백, 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
- 함수를 값처럼 다루어 변수에 담거나 다른 함수의 인자로 전달하거나 함수의 반환값으로 사용할 수 있는 함수. 일급 함수의 이러한 특성을 활용하여 를 구현할 수 있습니다. - 함…

이 개념을 다룬 위키 페이지 (2)

💬 댓글

사이트 검색 / 명령어

검색

스크롤 = 확대/축소 · 드래그 = 이동 · 0 = 원래 크기 · ESC = 닫기