2016-06-09 4 views
0

나는 Nodejs을 배우고 있으며 반환 값을 완전히 이해하지 못했습니다. 예를 들어 많은 경우에 next()이 반환 된 후 실행을 중지 한 후에 반환되도록 제안되었습니다 (Reference). 그러나 간단한 응답과 같은 경우에 필요 return이다, 무슨 차이가 어떤 것이 선호된다 :'res.json (..)'과 'return res.json (..)'사이의 Nodejs 차이

return res.json({ message: 'Invalid access token' }); 
+0

위의 코드는 무엇을 의미합니까? 그 맥락없이 질문에 대답하는 것은 불가능합니다. –

+0

코드는 인증 시도에 대한 응답을 반환하는 간단한 인증 기능입니다. – eYe

+3

아래의 코드는 실행되지 않습니다 :-) 더 이상은 없습니다. return 문이 [this] (http://eslint.org/docs/rules/consistent-return) 규칙 –

답변

3

반환이 실행을 중지하는 데 사용됩니다

res.json({ message: 'Invalid access token' }); 

대. 그것은 종종 조건에 기초하여 어떤 형태의 조기 귀국을하기 위해 사용됩니다.

반환을 잊어 버리면 함수가 반환되는 대신 실행이 계속됩니다. 예제는 일반적인 표현형 미들웨어 예제입니다. 중간웨어 기능은 다음과 같습니다 경우

:

function doSomething(req, res, next){ 
    res.json({ message: 'Invalid access token' }); 
} 

하지만 자주이 패턴이 구현 :

function doSomething(req, res, next){ 
    if(token.isValid){ 
     return res.json({ message: 'Invalid access token' }); // return is very important here 
    } 
    next(); 
} 

function doSomething(req, res, next){ 
    return res.json({ message: 'Invalid access token' }); 
} 

결과의 동작은 정확하게 같은 것

반환 값이 무시되고 토큰이 invlaid 될 때 알 수 있듯이 wi res.json() 메서드를 호출하지만 의도 한 동작이 아닌 next() 메서드로 계속 진행합니다.

+0

http://stackoverflow.com/questions/16810449/when-to-use-next-and-return-next-in-node-js?lq=1 –

+0

감사합니다. 따라서 기술적으로 충분히주의를 기울이면 조기 반환이 필요하지 않을 때 돌아갈 필요가 없습니다. – eYe

+1

예, 기술적으로 당신은 할 필요가 없습니다. 항상 콜백을 호출 할 때 반환하려고합니다. 하지만 디버깅 시간을 줄이면 항상이를 반환합니다. 콜백을 두 번 이상 호출하면 눈물로 끝납니다. :( –

관련 문제