繁体   English   中英

在另一个函数中使用一个函数的值

[英]Use a value from one function in another function

我的child.stderr.on()child.stderr.on()都使用一个返回持续时间值的回调(它只是一个表示执行时间的数字,以毫秒为单位)。

我想在child.on()使用它。 我以为可以在函数外部声明一个变量,在函数中为其分配持续时间,然后在child.on()使用它。 我在下面包括了我的功能。 child.stdout.onchild.stdout.on相同。 能做到吗?

child.stdout.on('data', function(data, callback) {
    getEventLog.getId(id, uuid, function(err, id, code, callback){  
      //if(err) return console.log(err)
      console.log("ID: " + id); 
      getEventLog.getDuration(id, uuid, function(err, duration, callback){
        jobRun.duration = duration;
      })
    });
   }); 




child.on('close', function(code, duration) {

  var logMessage = 
    "Completed jobRunId " + jobRun.id + " (" + jobRun.jobsId + ") " + jobRun.jobType + 
      " run " + jobRun.runNumber + " in " + jobRun.duration + " with exit code " + code;
  jobLogger.info(logMessage + "<br />");

  callback(jobRun.id);
});

当我运行上面的代码时,我得到了:

在9813ms中完成了jobRunId 818(601)teragen run 6,退出代码未定义

与此相关的最大问题是您正在异步环境中运行。 这意味着尽管您可以通过这种方式进行操作,但不能保证您将在给定的时间对变量进行任何给定的赋值,除非,例如,在开始时就为其赋值一次。

简短的答案是肯定的,它将按您期望的那样工作。

长答案是,除非保证您在调用“ child.on('close'”之前至少有一个“ child.stdout.on('data'”调用),否则您的变量可能不会被更新。在异步环境中,这种代码通常不是一个好主意,因为您不知道何时会发生什么。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM