2013-04-05 2 views
1

나는 Express.js를 사용하여 node.js REST 서버를 작성하는데,이 세션의 일부로 간단한 세션 시스템도 작성하고 있습니다.다음 기능으로 통과, 조건에 따라 발화. nodejs

//Get all highscores 
app.get('/api/highscores', function (req, res) { 
    userSession.checkValidity(req.query['username'], req.query['sessionid'], highscoreMan.getAll(req, res)); 
}); 
:

  • highscoreMan.js
  • userSession.js

http://localhost/api/highscores의 app.js URL 지금 주어진 매개 변수를 사용하여 사용자 세션을 호출을 app.js : 나는 3 개 모듈이

그러나 checkValidity에서 내가 전달하는 함수는 자동으로 호출됩니다 :

나는 데이터베이스에서 적절한 결과를 얻으면 주어진 함수 만 전달하려고합니다 (다른 검사는 나중에 세션 날짜 등에 추가됩니다). 내가 어떻게 할까?

답변

2

highscoreMan.getAll()를 호출 지연 :

app.get('/api/highscores', function (req, res) { 
    userSession.checkValidity(req.query['username'], req.query['sessionid'], function() { 
    highscoreMan.getAll(req, res); 
    }); 
}); 

그렇지 않으면 즉시 호출되고있어 그 return 값입니다 대신 userSession.checkValidity()으로 전달됩니다. 당신은 또한 checkValidity을 조정해야합니다

참고이 (가) callback을 통과 호출 :

이 훌륭하게 작동
// ... 
if(result) { 
    callback(); 
} 
// ... 
+0

, 감사를! – nenne

0

문제를 완전히 이해하지 않는 한, 다음과 같이 할 수 없습니까?

if (result && some_validator(result)) { 
    callback(); 
} 
, 당신은 그것을 나중에 호출 할 수있는 또 다른 function의 성명 확인해야합니다