0

我的代码是这样的,

var jenkins = require('jenkins')('http://192.168.1.5:8080');
var job_name = undefined;

jenkins.job.list(function doneGetting(err, list) {
    if (err) throw err;
    job_name = list[0].name;
});

jenkins.job.get(job_name, function(err, info){
    if (err) throw err;
    res.render('index', {
         title: 'Jenkins API',
         job_name: job_name,
         job_info: info
    })
});

我的问题是我无法获得 job_name 的值,因为它在回调中。我正在尝试为此找到解决方案。尽管已经存在很多关于回调的问题,但无法找到解决方案。对此感到抱歉。

提前致谢。

4

1 回答 1

2

你可以简单地移动你的jenkins.job.get内部jenkins.job.list回调

jenkins.job.list(function doneGetting(err, list) {
    if (err) throw err;
    job_name = list[0].name;

    jenkins.job.get(job_name, function(err, info){
        if (err) throw err;
        res.render('index', {
             title: 'Jenkins API',
             job_name: job_name,
             job_info: info
        })
    });
});

还有其他解决方案,比如使用函数

jenkins.job.list(function doneGetting(err, list) {
    if (err) throw err;
    job_name = list[0].name;

    getJob(job_name);
});

function getJob(job_name) {
    jenkins.job.get(job_name, function(err, info){
        if (err) throw err;
        res.render('index', {
             title: 'Jenkins API',
             job_name: job_name,
             job_info: info
        })
    });
}

这取决于您的模式、模块或脚本的复杂性。

于 2013-10-12T12:34:34.367 回答