2

Pythonスクリプトを呼び出すcpuUtilizationという関数が必要なノードモジュールを作成していますが、stdoutが返されます。

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));
    });
}
4

1 に答える 1

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 のコールバックが (少なくとも) 2 つのパラメーターを返す必要があるのは常識です。最初のパラメーターはエラー インスタンスで、2 番目のパラメーターには実際のデータが含まれます。

これで、関数を使用できます。たとえば、次のようになります。

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

一般に、高階関数に慣れることをお勧めします。

于 2013-02-06T11:27:32.920 に答える