2017-03-31 10 views
0

:어떻게 Nodejs ChildProcess.exec에서 실행 시간을 계산하기 위해 우리는 다음과 같이 우리의 사용자의 로그인 API 요청이

... 

//lauches an API request 

router.post("/trip/analyse",function(req,res){ 

    t0 = Date.now(); 

    shell = ("sudo /usr/bin/python /mypythonFile"); 

    child = exec(shell, function (error, stdout, stderr) { 

     if (error) { //There is an error 

     res.json({"Error" : true}); 

     console.log(Date.now() - t0); // <-------- HERE, How to get this right ? 

     }else{ //everything went fine 

     res.json({"Error" : false}); 

     console.log(Date.now() - t0); // <-------- HERE, How to get this right ? 

     } 

    }); 

}); 
... 

을 나는 많은 사용자가에 로그인 할 때 때문에 인쇄 실행 시간이 바로 아니라고 볼 같은 시간에 executionTime ("Date.now() - t0")을 계산하는 데 사용되는 "t0"값이 올바르게 계산되지 않습니다. 적절한 t0 값이 아니라이 API 요청의 최근 호출의 t0 값을 사용합니다.

이것은 exec 메서드가 비동기이며 실행하는 데 시간이 걸리기 때문입니다.

원래 t0 변수가 손실 된 실행 시간 ("Date.now() - t0")을 올바르게 수정하는 방법은 무엇입니까?

+1

왜 글로벌 변수입니까? 이것은 아마 당신의 문제를 일으키는 것입니다. 변수 t0 등을 이전에 var를 추가하는 함수로 범위 지정하십시오. – mrdotb

+0

오, 정말 고마워요 !! 그것을 고정! – inconnu26

답변

0

난 단지

VAR를 넣어했다 T0 = Date.now();

그리고 효과가있었습니다.

+0

해결 된 것으로 표시하고 모범 사례를 위해 자바 스크립트에서 전역 변수를 사용하지 마십시오. – mrdotb