函数内的回调应该返回另一个函数

时间:2017-02-25 10:21:26

标签: javascript node.js asynchronous

在node.js中工作并尝试让节点运行python-shell,计算一个值,然后将computePython()的答案作为具有关键结果的对象返回。

如何获取返回结果的消息:FutureValue()? console.log(message)在.on中工作(' message' ..

function computePython(){
  return {
  result: FutureValue() // I want message from FutureValue() to show up here
  };
}

function FutureValue(){
  var rate = 0.05;
  var nper = 10;
  var pmt = 100;
  var pv = 100;
  var result;

  new PythonShell('future_value.py', jsc(options, {
    args: [rate, nper, pmt, pv]
    }))
    .on('message', function (message) {
       console.log(message); //works
       return message;
    });
  }

1 个答案:

答案 0 :(得分:1)

由于此处理是异步处理,您可以使用Promise使代码更清晰且可重复使用:

function computePython(){
  getFutureValue().then(function(value) {
      // do what you want with value here
  });
}

function getFutureValue(){
  var rate = 0.05;
  var nper = 10;
  var pmt = 100;
  var pv = 100;
  var result;

  return new Promise(function(resolve, reject) {
    new PythonShell('future_value.py', jsc(options, {
        args: [rate, nper, pmt, pv]
    }))
      .on('message', resolve);
  })
}