2012-05-09 3 views
0

javascrip (nodejs 서버)의 "정적"함수에 문제가 있습니다.비동기 JavaScript 정적 함수 변수

User.create = function(data, _callback){   
    var node = db.createNode(data); 
    var _user = new User(node); 
    _user.save(function(err){ 
     if(err) return callback(err, null); 
     _user.index(function(err){ 
      if(err) return callback(err, null); 
      callback(null, _user); 
     }) 
    }) 
}; 

내가 두 번이 함수 내부 콜백 함수의 _user 변수를 호출하는 경우는 새로운 하나를 할당하는 대신 함수 VAR을 무시 보인다, 새 값을합니다.

새 변수를 할당하려면이 함수를 호출해야하므로 _user 변수를 변경하지 않고 저장 및 색인 함수가 완료 될 때까지 대기합니다.

답변

0

JavaScript 변수는 실제로 기능 범위이므로 var _user에 대한 후속 실행시 새 변수를 정의하지 않아도됩니다.

코드를 보면 User 생성자에서 어떤 일이 일어나고 있는지 의심 스러울 수 있습니다. 범위 지정 또는 기타 논리적 인 문제가있어 아마도 이후 사용자가 동일한 호출을 할 때 생성됩니다. 비슷한 "용의자"는 db.createNode()과 마찬가지로 data 매개 변수가 전달됩니다. 오히려 자바 스크립트 규칙 : 또한

을 따르지 않는 것보다, 놀이 프로그래밍 문제가 있다는 가능성 때문에 만,이 지역을 제안, 당신의 User.create 기능 _callback라는 매개 변수를 허용하지만, 나중에 callback를 호출하는 것으로 나타났습니다 . 귀하의 예제에서 오타가 아닌지, 아니면 예제에 표시되지 않은 상위 ​​범위에서 실수로 콜백을 호출하는 경우에는 이상한 행동을 유발할 수 있습니다.

관련 문제