2

我正在创建一个节点模块,我想要一个名为 cpuUtilization 的函数,该函数调用 python 脚本并返回标准输出。

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 中的回调应该返回(至少)两个参数,这是常识,其中第一个是错误实例,第二个包含实际数据。

现在您可以使用您的功能,例如:

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

一般来说,我建议您让自己熟悉高阶函数。

于 2013-02-06T11:27:32.920 回答