최근에 Express를 보다가 함수를 매개변수로 사용하는 콜백 함수를 곳곳에서 봤습니다. 이 개념을 이해하지 못하면 nodejs와 express의 코드가 엉망이 될 것입니다. 예:
이렇게 하면 5가 출력됩니다.
콜백 함수는 다른 함수(예: 상위)의 매개변수 목록에 배치되고 이 상위에 매개변수로 전달된 다음 상위 함수 본문의 어딘가에서 실행됩니다. 추상적입니다. 예를 살펴보겠습니다.
아래에서는 doit 함수를 호출합니다. 참고로 지금 막 doit을 정의했을 때는 콜백이 정의되어 있지 않아 콜백이 어떤 용도로 사용되는지 알 수 없었다. 이는 사실 이해하기 쉽습니다. 일반적으로 함수를 정의할 때 매개변수에는 a와 같은 이름만 부여하고, 함수 본문에서는 a를 사용하지만, 전체 프로세스는 그것을 호출할 때만 a가 무엇인지 알지 못합니다. function 그런 다음 a의 특정 값(예: 2)을 지정합니다. 돌이켜 보면 doit을 호출할 때 콜백이 무엇인지 지정해야 합니다. 보시다시피 이 함수는 합계 함수를 완성합니다.
위 코드의 실행 과정은 다음과 같습니다.
doit 함수를 호출합니다. 매개변수는 익명 함수입니다. doit의 함수 본문을 입력하고 먼저 a, b, c를 정의한 다음 방금 익명 함수를 실행합니다. 매개변수는 a, b, c이고 반환됩니다. a t, 그리고 마지막으로 A t 10을 반환하면 d가 제공됩니다.
원래 예로 돌아가서 app.use(...)는 함수 호출입니다. use 메소드가 이전에 정의되었음에 틀림없다고 생각할 수 있지만 여기서는 제공되지 않습니다. 이 두 가지 예를 비교해보면 바로 이해할 수 있습니다.
nodejs와 express를 사용할 때 모든 메소드나 함수의 함수 정의를 찾아서 살펴보는 것은 불가능합니다. 따라서 해당 정의에서 콜백에 어떤 매개변수가 전달되는지 알아보세요. 그런 다음 메소드나 함수를 호출할 때 특정 기능을 완성하기 위해 매개변수에 익명 함수를 직접 정의합니다.
끝!