1

我正在尝试在 node.js 文件和我使用 zeroRPC 成功实现的 Python 代码之间建立连接。当我尝试运行 node.js 文件时出现问题,在执行 node.js 文件的每一行之后,最后它执行建立 python 连接并调用 python 函数并检索值的“invoke”命令。对于例子:

Node.js 文件:

  var global_variable = 0;
  var json_object = "Some Json Object";
  console.log("1");
  NodeToPython(json_object);         //Calling the function

  function NodeToPython(json_object_local)
  {
     var send_json = json_object_local;
     var zerorpc = require("zerorpc");
     var client = new zerorpc.Client();
     client.connect("tcp://localhost:4242");

     console.log("2");
     client.invoke("receive", send_json, function(error, res, more) 
     {
       global_variable = JSON.parse(res);        // 'res' stores retrieved value from Python code
       console.log("3");
       client.close();
     }
     console.log("4");
 }
 console.log("5");

蟒蛇文件:

   import zerorpc, json
   class XYZ(object):

      def receive(self,response):                    // Called function 
          self.response=json.loads(response);
          print("Py");
          return json.dumps(self.response,encoding="utf-8",indent=2);

上述代码的输出如下: 1 2 4 5 Py 3

我希望输出是逐行顺序的,并且应该同时调用并从 Python 函数中获取值,如下所示:1 2 Py 3 4 5

4

1 回答 1

0

NodeJS 偏爱延续传递的编程风格。当您在客户端上调用 invoke 时,您正在安排一个函数稍后运行。每当 RPC 调用成功或失败时,都会调用此函数并显示结果和可能的错误。从那时起,您可以继续工作并安排更多功能。

于 2017-03-10T03:49:18.157 回答