[英]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.