2013-02-06 161 views
2

我正在創建一個節點模塊,我想要一個名爲cpuUtilization的函數調用python腳本並返回stdout。在節點js模塊中執行child_process

var sys = require('sys') 
var exec = require('child_process').exec; 

exports.cpuUtilization = function() { 
    exec('./nodeprime/cpuUtilization.py', function (error, stdout, stderr) { 
     return(JSON.parse(stdout)); 
    }); 
} 
+0

我已經試過上面的代碼,它不會返回一個對象 – user2045317

回答

0

你做網得到的結果從cpuUtilization回來,因爲return說法並不適用於該功能,但該功能內回調。

您需要將您的代碼轉換爲異步之一,並使用一個回調以及返回結果:

exports.cpuUtilization = function (callback) { 
    exec('./nodeprime/cpuUtilization.py', function (err, stdout, stderr) { 
    if (err) return callback(err); 
    callback(null, JSON.parse(stdout)); 
    }); 
}; 

這是常識,在Node.js的回調應該返回(至少)兩個參數,其中,第一個是錯誤實例,第二個包含實際數據。

現在你可以使用你的函數,例如:

cpuUtilization(function (err, data) { 
    // Do something with data ... 
}); 

一般來說我建議你來使自己熟悉高階函數。