자바 스크립트 node.js next ()


148

nextnode.js에서 많은 사용법 을 봅니다.

그것은 어디에서 왔습니까? 무엇을합니까? 클라이언트 쪽에서 사용할 수 있습니까?

예를 들어 여기에 사용되어 죄송합니다 : http://dailyjs.com/2010/12/06/node-tutorial-5/

loadUser 함수를 찾으십시오.


나는 이것을 어디에도 보지 못했으며 문서의 어느 곳에서도 언급되지 않았습니다. 보고있는 코드베이스 어딘가에 정의되어 있지 않습니까?
Samir Talwar

너무 모호합니다. 상황의 예를 들어 줄 수 있습니까?
Raynos

답변:


114

이것은 Node.js 제어 흐름 코드에서 변수 명명 규칙으로 보이며, 실행할 다음 함수에 대한 참조가 콜백에 제공되어 완료되면 시작됩니다.

예를 들어 다음 코드 샘플을 참조하십시오.

게시 한 예를 살펴 보겠습니다.

function loadUser(req, res, next) {
  if (req.session.user_id) {
    User.findById(req.session.user_id, function(user) {
      if (user) {
        req.currentUser = user;
        return next();
      } else {
        res.redirect('/sessions/new');
      }
    });
  } else {
    res.redirect('/sessions/new');
  }
}

app.get('/documents.:format?', loadUser, function(req, res) {
  // ...
});

loadUser함수는 세 번째 인수에서 name으로 바인딩 된 함수를 예상합니다 next. 이것은 정상적인 기능 매개 변수입니다. 수행 할 다음 조치에 대한 참조를 보유하며 한 번 loadUser완료 되면 호출 됩니다 (사용자를 찾을 수없는 경우 제외).

next이 예제 에서는 이름 에 특별한 것이 없습니다 . 우리는 무엇이든 지명 할 수있었습니다.


이것은 또한 express.js에서 꽤 많이 사용되지만 그렇지 않습니다 .next(). 그는 next물건에 대한 방법으로 묻고있는 것 같습니다 .
Raynos

1
더 나은 사용법return next();
Ryan Walton

2
@RyanWalton 동의합니다
Wayne

return callback()대신에 사용return next()
vijay

39

스캔 디렉토리-> 파일 데이터 읽기-> 데이터로 무언가를 수행하는 등 일련의 동작을 수행해야하는 상황에서 콜백을 전달할 때 사용되는 명명 규칙입니다. 콜백을 깊게 중첩하는 것이 좋습니다. Tim Caswell의 HowToNode 블로그 에 대한 다음 기사의 첫 세 섹션은 이에 대한 개요를 제공합니다.

http://howtonode.org/control-flow

해당 게시물의 두 번째 부분에 있는 순차 작업 섹션 도 참조하십시오 .

http://howtonode.org/control-flow-part-ii


1
이 링크에 감사드립니다. nodejs로 작업을 시작할 때 많은 것들을 설명합니다
Hassam Abdelillah

링크가 작동하지 않습니다. 내부 서버 오류가 발생했습니다
Deep Kakkar

1
인터넷 자료실에서 업데이트 된 링크
Pero P.

링크에 감사드립니다. 몇 달 전에 Node를 사용하기 시작했지만이 방법을 사용하고 있지만 완전히 이해하지는 못합니다.
Charles Smith

8

기본적으로 코드의 특정 부분이 실행되고 완료된 후 express.js가 사용 하는 콜백과 같습니다. 코드의 일부가 수행되고 다음에 수행하려는 작업을 확인하는 데 항상 사용할 수 있지만 항상주의해야합니다. res.sendREST 블록 에서 하나 를 수행하십시오 ...

간단한 next()예제 로 다음과 같은 작업을 수행 할 수 있습니다 .

app.get("/", (req, res, next) => {
  console.log("req:", req, "res:", res);
  res.send(["data": "whatever"]);
  next();
},(req, res) =>
  console.log("it's all done!");
);

앱에 미들웨어를 갖고 싶을 때도 매우 유용합니다 ...

미들웨어 함수를로드하려면 미들웨어 함수를 지정하여 app.use ()를 호출하십시오. 예를 들어 다음 코드는 루트 경로 (/) 로의 경로 이전에 myLogger 미들웨어 함수를로드합니다.

var express = require('express');
var app = express();

var myLogger = function (req, res, next) {
  console.log('LOGGED');
  next();
}

app.use(myLogger);

app.get('/', function (req, res) {
  res.send('Hello World!');
})

app.listen(3000);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.