应该返回到另一个函数的函数内的回调
使用node.js并试图让节点运行python-shell,计算一个值,然后返回computePython()的答案作为关键结果的对象。应该返回到另一个函数的函数内的回调
如何获取消息以返回结果:FutureValue()? 的console.log(消息)。在(“信息”中的作品..
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;
});
}
你不能因为这个处理是异步的,你可以使用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);
})
}
依然在挣扎,console.log(value)的作品,但返回值以{“result”; {}}结束了任何想法?function computePython(){ return { resul t:FutureValue()。then(function(value){console.log(value); //作品 返回值; //返回空 }) }; } – Peder
你想说你收到来自PythonShell执行的消息,但它是空的=> {{result:{}}'? – Freez
是的,所以我确实喜欢你说的,并从PythonShell获取消息给computerPython。当我使用console.log(value)运行computePython并在//中按值返回值时,console.log显示值,但返回值返回undefined。 – Peder
我想你应该使用[Promise](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise)。 –