[英]Use a value from one function in another function
我的child.stderr.on()
和child.stderr.on()
都使用一个返回持续时间值的回调(它只是一个表示执行时间的数字,以毫秒为单位)。
我想在child.on()
使用它。 我以为可以在函数外部声明一个变量,在函数中为其分配持续时间,然后在child.on()
使用它。 我在下面包括了我的功能。 child.stdout.on
与child.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.