如何在Node.js中的函数外定义变量并使用它

时间:2018-06-28 08:19:41

标签: javascript python node.js nodes node-modules

您好,我尝试使用从函数获得的值,并希望在函数外使用它。 我有一个python脚本正在尝试使用node进行调用,并希望使用node函数之外的python脚本返回的值。

下面是我想做的事情,我希望在函数外部使用aa值:

PythonShell.run(PythonfilePath, options, function (err, results) {
      if (err)
      throw err;                            
      let aa = parseInt(results)
});
console.log(aa)

我想将aa中的值存储用于其他。

3 个答案:

答案 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-等待此功能