您好,我尝试使用从函数获得的值,并希望在函数外使用它。 我有一个python脚本正在尝试使用node进行调用,并希望使用node函数之外的python脚本返回的值。
下面是我想做的事情,我希望在函数外部使用aa值:
PythonShell.run(PythonfilePath, options, function (err, results) {
if (err)
throw err;
let aa = parseInt(results)
});
console.log(aa)
我想将aa中的值存储用于其他。
答案 0 :(得分:1)
您的代码中有两个问题。第一个是在匿名回调函数中本地定义变量。这样,它将永远不会在该功能代码之外可见。您需要在代码顶部全局声明变量。
但是主要问题是:PythonShell.run
是一个异步函数,在完成时调用其回调函数。您的console.log
是在调用PythonShell.run
之后直接执行的。它不等待外壳程序完成。
您需要阅读有关异步代码和回调的信息,也许还需要阅读Promises,以使您的代码运行。
如果没有要在完成后运行的具体示例,则无法为您建议工作代码。
答案 1 :(得分:0)
如果您正在调用的函数是同步的,则可以在函数顶部声明变量,如下所示:
let aa;
PythonShell.run(PythonfilePath, options, function (err, results) {
if (err)
throw err;
aa = parseInt(results);
});
console.log(aa);
一个通常接受异步功能的函数。在这种情况下,您将无法从外部访问内部变量。 console.log
将在回调完成之前被调用。
如果需要访问此变量,则必须将需要它的代码放入回调函数中。
答案 2 :(得分:0)
let aa = null;
PythonShell.run(PythonfilePath, options, function (err, results) {
if (err)
throw err;
aa = parseInt(results)
});
console.log(aa)
您可能要使用async-等待此功能