최근에 나는 Express를보고 있으며 콜백 함수를 매개 변수로 사용하여 어디에서나 보았습니다. 이 개념을 이해할 수 없다면 Nodejs 및 Express 코드는 매우 혼란 스러울 것입니다. 예를 들어:
코드 사본은 다음과 같습니다.
app.use (function (req, res, next) {
var err = 새로운 오류 ( '찾을 수 없음');
err.status = 404;
다음 (err);
});
App은 객체이고 사용은 메소드이며 방법의 매개 변수는 매개 변수가있는 익명 함수이며 기능 본문은 나중에 직접 제공됩니다. 이 코드를 어떻게 이해합니까? 먼저 콜백 함수의 개념을 이해합시다.
우선, JS에서는 기능이 변수에 할당 될 수 있으며 함수의 매개 변수 목록에서 매개 변수로 배치 할 수 있다는 것을 이해해야합니다. 예를 들어:
코드 사본은 다음과 같습니다.
var dosomething = function (a, b)
{
A + B를 반환합니다.
}
이 코드는 익명 기능을 정의하는 것을 의미합니다. 이름이없는 것을 제외 하고이 익명 기능은 일반적인 기능과 다르지 않습니다. 그런 다음 익명 함수를 가변 복용량에 할당하십시오. 다음으로 우리는 다음을 호출합니다.
코드 사본은 다음과 같습니다.
Console.log (dosomething (2,3));
이것은 출력 5입니다.
콜백 함수는 다른 함수 (예 : 부모)의 매개 변수 목록에 배치되고 모수로 부모에게 전달 된 다음 부모 기능 본체의 특정 위치에서 실행됩니다. 추상화에 넣으려면 예를보십시오.
코드 사본은 다음과 같습니다.
// 콜백의 개념을 설명합니다
var doit = function (콜백)
{
var a = 1,
b = 2,
C = 3;
var t = 콜백 (a, b, c);
반환 t + 10;
};
var d = doit (function (x, y, z) {
반환 (x+y+z);
});
Console.log (d);
먼저 doit 함수를 정의하면 매개 변수 콜백이 있습니다. 이 콜백은 콜백 함수이며 이름은 임의로 가져갈 수 있습니다. 기능 본문을 보면 먼저 세 가지 변수 a, b 및 c를 정의하십시오. 그런 다음 콜백 함수를 호출하십시오. 마지막으로 값이 반환됩니다.
다음은 doit 함수입니다. 지금 Doit을 정의했을 때 콜백은 정의되지 않았으므로 콜백이 무엇인지 알지 못했습니다. 이것은 실제로 이해하기 쉽습니다. 함수를 정의 할 때 매개 변수는 기능 본문에서 A와 같은 이름 만 제공하지만 전체 프로세스는 A가 무엇인지 알지 못합니다. 2와 같이 함수가 호출되는 경우에만 Doit을 호출 할 때 콜백이 무엇인지 지정해야합니다. 보시다시피,이 함수는 합 함수를 완료합니다.
위 코드의 실행 프로세스는 다음과 같습니다.
DOIT 함수를 호출하십시오. 매개 변수는 익명 함수입니다. doit의 함수 본문을 입력하고 먼저 a, b, c를 정의한 다음 지금 익명 함수를 실행하고, 파라미터는 a, b, c이며, A t를 반환하고 마지막으로 t+10을 d로 반환합니다.
원래 예제로 돌아가서 app.use (...)는 함수 호출입니다. 우리는 사용 방법이 이전에 정의되어 있어야한다고 상상할 수 있지만 여기에는 제공되지 않습니다. 이 두 가지 예를 비교하면 즉시 이해할 수 있습니다.
nodejs 및 express를 사용하는 경우 각 방법이나 기능의 함수 정의를 찾아 볼 수 없습니다. 따라서 해당 정의에서 콜백으로 전달되는 매개 변수를 알고 있습니다. 그런 다음 메소드 또는 함수를 호출 할 때 매개 변수의 익명 함수를 정의하여 특정 함수를 완성합니다.
위에!