Javascript 从参数函数中获取值

Javascript 从参数函数中获取值,javascript,node.js,jira-rest-api,Javascript,Node.js,Jira Rest Api,对不起,我的问题是Noob。我正在尝试编写一个名为“getTransitionId”的node.js函数,该函数使用该插件为特定问题的可能转换检索数据 jira连接器的getTransitions函数有两个参数:一个是带有票据参数的对象,另一个是调用完成后要执行的函数 这是我的问题:出于超出问题范围的原因,我想在作为参数传递给“getTransitions”的函数之外访问这些数据。但我不知道如何访问。我知道最后一个return语句(return“transitionData”)返回“undefi

对不起,我的问题是Noob。我正在尝试编写一个名为“getTransitionId”的node.js函数,该函数使用该插件为特定问题的可能转换检索数据

jira连接器的getTransitions函数有两个参数:一个是带有票据参数的对象,另一个是调用完成后要执行的函数

这是我的问题:出于超出问题范围的原因,我想在作为参数传递给“getTransitions”的函数之外访问这些数据。但我不知道如何访问。我知道最后一个return语句(return“transitionData”)返回“undefined”,因为它在调用完成之前执行了一个return语句,但我不知道如何解决这个问题

在这种情况下,我能正确使用回调吗?如果是这样,我将如何在作为参数传递给另一个函数的函数中使用它

const JiraApi = require('jira-connector');

const jira = new JiraApi( {
    host: //Jira URL
    basic_auth: {
        //Authentication Information
    }
});


function getTransitionId (ticketNumber, transition) {
    jira.issue.getTransitions({
        issueKey: ticketNumber,
    }, function(error, transitions){
        const transitionData = transitions['transitions'];
    });

return transitionData;
}

谢谢你的帮助。希望这是有意义的

您可以使自己的
getTransitionId
函数将回调函数作为参数。下面是一个不完整的示例(请参见下文):

但这并不完美。如果
getTransitions
有错误怎么办

调用
jira.issue.getTransitions
时,传递一个回调函数,该函数包含两个参数:
error
transitions
。这是JavaScript中接受回调的函数的标准-也就是说,回调通常接受一个错误参数(如果没有错误,则为null或未定义)和一个数据参数(包含操作的结果,如获取的
转换
id

我们可以将
getTransitionId
更改为获取错误,然后将错误传递给您给
getTransitionId
的回调:

function getTransitionId (ticketNumber, transition, callback) {
    jira.issue.getTransitions({
        issueKey: ticketNumber,
    }, function(error, transitions){
        if (error) {
            callback(error);
            return;
        }
        const transitionData = transitions['transitions'];
        const id = /* ..get ID fron transitionData, somehow.. */
        callback(null, id);
    });
}
getTransitionId(ticketNumber, transition, function(error, id) {
    if (error) {
        console.error("There was an error fetching the transition ID:", error);
        return;
    }
    console.log("Got the ID:", id);
}
(注意,我们在
if(error)
中使用
return;
语句,这样我们就不会继续尝试使用
transitions
参数,这可能是未定义的,因为
jira.issue.getTransitions
中有错误。这也防止了第二次调用
回调
。)

由于我们添加了一个
error
参数,我们需要更改调用
getTransitionId
的方式:

function getTransitionId (ticketNumber, transition, callback) {
    jira.issue.getTransitions({
        issueKey: ticketNumber,
    }, function(error, transitions){
        if (error) {
            callback(error);
            return;
        }
        const transitionData = transitions['transitions'];
        const id = /* ..get ID fron transitionData, somehow.. */
        callback(null, id);
    });
}
getTransitionId(ticketNumber, transition, function(error, id) {
    if (error) {
        console.error("There was an error fetching the transition ID:", error);
        return;
    }
    console.log("Got the ID:", id);
}
(由于我们执行
回调(null,id);
getTransitionId
的代码中,
error
null
,因此
if(error){
中的代码不会运行。当然,如果有错误,
if(error){
将运行,这就是我们想要的!)


通过添加代码来处理传递给回调的
错误
,您可以使代码更安全。相反,如果忽略
错误
,您的代码中可能会出现难以找到的错误-例如,您可能会出现类型错误,因为
转换
未定义,或者请参阅“获取ID:未定义”在日志中!

太好了!非常感谢!