2017-03-31 43 views
0

我們有登錄我們的用戶,像這樣的API請求:如何計算執行時間的NodeJS ChildProcess.exec

... 

//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」值未正確計算。它使用此API請求的最近調用的t0值,而不是適當的t0值。

這是因爲exec方法是異步的,需要時間來執行。

如何正確執行正確的執行時間(「Date.now() - t0」),其中原始t0變量丟失?

+1

爲什麼變量是全局變量?這可能會導致您的問題。將變量t0等作用於添加var之前的函數。 – mrdotb

+0

哦,非常感謝你!修好了! – inconnu26

回答

0

我只有把

VAR T0 = Date.now();

它的工作!

+0

標記爲已解決且最佳實踐從未在JavaScript中使用全局變量。 – mrdotb