【问题标题】:call nodejs and python asynchronously异步调用nodejs和python
【发布时间】:2020-03-03 16:31:07
【问题描述】:

大家,

我想在我的节点脚本中异步调用 python 脚本。我为此使用“python-shell”。

我的问题是节点先执行自己的代码,然后执行 python 脚本。我在运行时需要 python 脚本数据。

这意味着:

let {PythonShell} = require('python-shell');
let message;

PythonShell.run('python.py',null,function(err,res){
if(err) throw err;
message =res;
console.log("1",res);
}
console.log("2",{message});

输出: => 2 undefined => 1 foo

我需要结果,但像这样: => 1 foo => 2 foo

你能帮我写一个小例子吗?我已经读到它可能适用于 .on.end 但我不明白如何!

【问题讨论】:

  • 我的回答能帮助您解决问题吗?

标签: javascript python node.js asynchronous


【解决方案1】:

原因是因为你的 run 方法是异步的和基于回调的。这意味着它将触发该方法并前进到下一条语句。在这种情况下,它是您的控制台语句打印 2 和消息。由于您在回调中设置消息,它在控制台语句之后执行,因此您会看到这种行为。要解决此问题,您需要像这样在回调中移动控制台语句

const {PythonShell} = require("python-shell");
let message;

PythonShell.run("python.py", null, function (err, res) {
  if (err) {
    throw err;
  }
  message = res;
  console.log("1", res);
  console.log("2", {message});
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-21
    • 2017-05-15
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多