从参数函数中获取值
Get Value from parameter function
抱歉这个新手问题。我正在尝试编写一个名为 "getTransitionId" 的 node.js 函数,它使用 jira-connector 插件来检索特定问题的可能转换数据。
jira-connector 的 getTransitions 函数有两个参数:一个带有票证参数的对象,以及一个在调用完成后执行的函数。
这是我的问题:出于超出此问题范围的原因,我想在作为参数传递给 "getTransitions." 的函数之外访问此数据,但我不知道如何访问。我知道最后一个 return 语句 (return "transitionData") 是 returning "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
函数将回调函数作为参数。这是一个 不完整的 示例(见前面):
function getTransitionId (ticketNumber, transition, callback) {
jira.issue.getTransitions({
issueKey: ticketNumber,
}, function(error, transitions){
const transitionData = transitions['transitions'];
const id = /* ..get ID fron transitionData, somehow.. */
callback(id);
});
}
// Called like this:
getTransitionId(ticketNumber, transition, function(id) {
console.log("Got the ID:", id);
});
不过,这并不完美。如果getTransitions
有错误怎么办?
当您调用 jira.issue.getTransitions
时,您传递了一个回调函数,该函数采用 两个 参数:error
和 transitions
。这是在 JavaScript 中接受回调的函数的标准——也就是说,回调通常接受一个错误参数(如果没有错误则为 null 或 undefined)和一个数据参数(包含操作的结果,如 fetched transitions
或 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);
});
}
(请注意,我们在 if (error)
中使用了 return;
语句——这样我们就不会继续尝试使用 transitions
参数,即 可能未定义,因为jira.issue.getTransitions
中有错误。这也防止了callback
被第二次调用。)
由于我们添加了一个 error
参数,我们需要更改我们调用 getTransitionId
:
的方式
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);
}
(因为我们在 getTransitionId
的代码中做 callback(null, id);
,error
将是 null
,所以 if (error) {
中的代码不会 运行。当然,如果是错误,if (error) {
就会是运行,就是这样我们想要!)
通过添加代码来处理传递给您的回调的 error
,您可以让您的代码更安全。相反,如果您 忽略 error
,您最终可能会在代码中出现难以发现的错误 - 例如,您可能会遇到 TypeError 因为 transitions
未定义,或在日志中查看 "Got the ID: undefined"!
抱歉这个新手问题。我正在尝试编写一个名为 "getTransitionId" 的 node.js 函数,它使用 jira-connector 插件来检索特定问题的可能转换数据。
jira-connector 的 getTransitions 函数有两个参数:一个带有票证参数的对象,以及一个在调用完成后执行的函数。
这是我的问题:出于超出此问题范围的原因,我想在作为参数传递给 "getTransitions." 的函数之外访问此数据,但我不知道如何访问。我知道最后一个 return 语句 (return "transitionData") 是 returning "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
函数将回调函数作为参数。这是一个 不完整的 示例(见前面):
function getTransitionId (ticketNumber, transition, callback) {
jira.issue.getTransitions({
issueKey: ticketNumber,
}, function(error, transitions){
const transitionData = transitions['transitions'];
const id = /* ..get ID fron transitionData, somehow.. */
callback(id);
});
}
// Called like this:
getTransitionId(ticketNumber, transition, function(id) {
console.log("Got the ID:", id);
});
不过,这并不完美。如果getTransitions
有错误怎么办?
当您调用 jira.issue.getTransitions
时,您传递了一个回调函数,该函数采用 两个 参数:error
和 transitions
。这是在 JavaScript 中接受回调的函数的标准——也就是说,回调通常接受一个错误参数(如果没有错误则为 null 或 undefined)和一个数据参数(包含操作的结果,如 fetched transitions
或 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);
});
}
(请注意,我们在 if (error)
中使用了 return;
语句——这样我们就不会继续尝试使用 transitions
参数,即 可能未定义,因为jira.issue.getTransitions
中有错误。这也防止了callback
被第二次调用。)
由于我们添加了一个 error
参数,我们需要更改我们调用 getTransitionId
:
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);
}
(因为我们在 getTransitionId
的代码中做 callback(null, id);
,error
将是 null
,所以 if (error) {
中的代码不会 运行。当然,如果是错误,if (error) {
就会是运行,就是这样我们想要!)
通过添加代码来处理传递给您的回调的 error
,您可以让您的代码更安全。相反,如果您 忽略 error
,您最终可能会在代码中出现难以发现的错误 - 例如,您可能会遇到 TypeError 因为 transitions
未定义,或在日志中查看 "Got the ID: undefined"!