首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在另一个函数中使用一个函数的值

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

Stack Overflow用户
提问于 2018-01-29 23:25:58
回答 1查看 42关注 0票数 0

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

我想在我的child.on()中使用这个。我想我可以在函数之外声明一个变量,在我的函数中为它分配持续时间,然后在我的child.on()中使用它。我已经把我的建议写在下面了。child.stdout.onchild.stdout.on相同。这能办到吗?

代码语言:javascript
复制
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);
});

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

已完成的jobRunId 818 (601) teragen在9813 in中运行6次,退出代码未定义

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-30 01:37:34

最大的可能问题是您正在异步环境中运行。这意味着,虽然你可以这样做,但这并不能保证你会在给定的时间对你的变量进行任何给定的赋值,除非,例如,你在一开始就给它赋值一次。

简单地说,是的,它会像你期望的那样起作用。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48511650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档