Skip to main content

Command Palette

Search for a command to run...

Asynchronous Programming In Javascript - Callback

Published
•1 min read•View as Markdown

1] Features of functions in Javascript

Javascript의 function은 First-Class Citizens(1급 객체)이다.

\=> 그 말은, 함수는 그 자체가 객체가 된다는 말이며 다른 Javascript의 객체처럼 사용될 수 있다는 뜻이다.

따라서,

  1. 함수는 변수에 할당할 수 있다.

  2. 함수는 다른 함수의 인자로 줄 수 있다.(callback으로 줄 수 있다.)

  3. 함수는 다른 함수에서 리턴될 수 있다.

2] Callback

다른 함수에서 인자를 받아 그 함수 내에서 실행되는 함수

Example)

forEach라는 함수에서 인자를 받아서 print가 forEach 함수 내에서 실행되고 있다.

print라는 함수를 정의하고, callback으로 사용한 것이다.

print()가 아닌 print인 것을 볼 수 있다.

3] Further Details

Callbacks Are Not Always Asynchronous

callback을 비동기 처리(좌)할 수도, 동기 처리(우)에 사용할 수도 있다.

4] Handle Errors In Asynchronous Code

callback의 첫번째 인자를 통해 에러를 핸들링한다.

비동기 함수 내에 문제가 생기면 어떤 종류의 오류가 발생했는지

알려주는 첫번째 인수(error라는 인자)를 사용하여 콜백이 호출된다.

문제가 없으면, 첫번째 인자는 null이 된다

5] Limitation of callback

Callback Hell

다음과 같이 함수를 적용할 경우, plusOne 함수는 비동기이기 때문에

1초 뒤 1, 2, 3이 동시에 나오게된다.

따라서 callback을 사용하여 1, 2, 3이 1초씩 걸리게 나오게 하려면 다음과 같이 하면 된다.

새로운 함수가 추가될 수록 안쪽 콜백에 자리잡게 되고, 이러한 읽고 이해하기에 힘든 Callback Hell이 만들어지며, 이러한 이유로 Promise를 개발하게 된다.

More from this blog

RFC 9110 HTTP Semantics - TRACE

1] TRACE trace는 요청 메시지의 원격 application-level의 loop-back을 요청한다. 요청의 최종 수신자(final recipient)는 민감한 데이터를 포함한 필드를 제외하고 수신한 메시지를 200(OK) 응답의 내용으로 클라이언트에 다시 반영해야 합니다.(should) message/http 형식은 이를 수행하기 위한 한 가지 방법이다. 최종 수신자는 Origin Server이거나 요청에서 Max-Forwards ...

Nov 28, 20241 min read

RFC 9110 HTTP Semantics - POST

1] POST POST 메서드는 target resource가 리소스 자체의 특정한 의미에 따라 요청에 포함된 representation을 처리하도록 요청한다. 예를 들어, 다음의 기능을 수행한다. HTML form에 입력된 필드같은 데이터 블록을 데이터 처리 프로세스에 제공 게시판, 뉴스 그룹, 메일링 리스트, 블로그, 또는 비슷한 기사 그룹에 메시지 게시(posting) origin server에서 식별되지 않은 새로운 리소스 생성 ...

Nov 2, 20242 min read

RFC 9110 HTTP Semantics Method Definitions GET

1] GET GET Method는 대상 리소스에 대한 현재 선택된 representation의 전송을 요청한다. 성공적인 응답은 대상 URI가 식별한 동일성의 품질을 반영한다.(계속 요청하면 항상 동일한 응답을 줌) 따라서 HTTP를 통해 식별 가능한 정보를 검색하는 것은 일반적으로 GET 요청을 통해 수행되며 200(OK) 응답을 준다. 리소스 식별자를 원격 파일 시스템 경로명으로, representation을 해당 파일 콘텐츠의 복사본으로 ...

Oct 9, 20243 min read

Spring Data JPA Dynamic Projections

1] 기존 Projections 특정한 Entity의 컬럼을 전부 가져오고 싶지 않을 때, 기존의 경우는 메서드마다 record를 생성하였다. 이때, 출처에서 적힌 것처럼, 여러 메서드가 하나의 record를 쓰는 경우가 생기게 된다. 예를 들어, 컬럼이 id, name, genre, 등등이 있을 때 기존에 id와 name만을 가져오는 record가 있을 경우 id, name, genre를 가져오는 메서드를 만들 경우 기존의 record에 ge...

Sep 25, 20242 min read

Jong-Dae's Coding Docs

17 posts