stdout/stderror 不是 ssh-promise 库中承诺履行的一部分吗?



我有以下代码,它承诺了许多对各种服务器的函数调用。在所有函数调用的返回时,响应对象被发送到 Mongo 数据库并存储为单个文档。 承诺的原因是所有函数都必须完成,并且它们的返回值位于响应部分中,以便数据库可以存储所有适当的响应。(代码如下)

 Q.all(functionCalls)
     .then(function(response) {
        //console.log(response);
        Q.then(dbHandler(response))
           .catch( function(e) {
              console.log(e);
           })
           .finally( function() {
              console.log('Execution completed successfully!');
           });
     }, function() {
        console.log('unhandled exception');
     });

我遇到的问题是涉及 ssh-promise 库的单个函数调用。问题是,在响应中填充 stdout 或 stderror 字段之前,承诺已解决。 这是 ssh 调用的代码。为简洁起见,截取的代码如下:

   var ssh = new Client(config);
   var ack = "200 - OK";
   var pub = {};
   var execString = "java -classpath" + classpath + javaSecurityArgs + " -DAPP_ENV=" + env + javaMainClass + jobString + " date=" + seconds;
   ssh.exec( execString )
      .then( function(stdout) {
         json.parse(stdout.match(/^FulfillmentReportJson:(.*)$/gm))
            .catch(function (e) {
               console.log(e.message);
               pub = {
                  'type': 'fulfillmentBatch',
                  'result': 'failed'
               };
            })
            .then(function (response) {
                  console.log(stdout);
                  pub = {
                     'type': 'fulfillmentBatch',
                     'result': response
                  };
               }
            )
      })
      .catch(function(stderr) {
         pub = {
            'type': 'fulfillmentBatch',
            'result': 'failed' + stderr
         };
      })
      .done();

"then"的承诺实现返回来自stdout或stderror的响应,并将其填充到返回的pub.result中。

问题是这样的:当我执行此代码时,承诺在 ssh.exec 返回 stdout 或 stderror 之前完成。这就像承诺实现一样,然后将近 5 秒后(在写入数据库对象之后),我们看到 stdout/stderror 数据的返回。 数据库对象包含此函数应填充数据的位置的"null",而"then"部分中的控制台.log(stdout)包含stdout/stderror数据。 任何帮助将不胜感激。

在上面的响应后,我查看了代码,意识到我错误地接近了 ssh 命令。

  ssh.exec(execString, {
  exit: function(code, stdout, stderr) {

我应该在执行中使用"退出"而不是"退出"和"错误"响应。出口允许构建适当的响应对象

相关内容

  • 没有找到相关文章

最新更新