我现在已经搜索和阅读了一段时间,似乎无法掌握如何通过回调实现以下目标。我知道这应该是"简单"并且不希望使用promises或任何其他库来解决它,因为我想了解如何仅通过回调实现此目的。
我使用Node.js编写一个webform,如果没有提供JIRA事件编号,它将创建该票证,然后发送一个带有该号码的电子邮件通知。
我拥有的是......伪代码:
function jiraCreate(req, res) {
if req.body.inc is blank {
var jiraInc = jiraAPI call to create ticket;
} else {
jiraInc = req.body.inc;
}
return jiraInc;
}
function jiraComment(req, res, jiraInc) {
jiraCommentAPI(jiraInc) // jiraAPI call to add comments to the provided jiraInc
}
function handleJira(req, res) {
var jiraInc = jiraCreate(req, res);
jiraComment(req, res, jiraInc);
}
handleJira(req, res);
当然,如上所述,如果req.body.inc为空,jiraComment将执行并声明该事件不存在。我如何使用回调重新编写它来实现我的目标?有可能吗?
我已经在Callbacks上阅读了这么多内容,但似乎无法得到它。无论我如何编写代码,jiraComment似乎总是先运行。我非常感谢您提供的任何帮助!
谢谢!
答案 0 :(得分:1)
“jiraAPI调用创建票证”是异步的......即当你打电话时,代码就是
http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
var body = "";
res.setEncoding('utf8');
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
// {1} Here you can continue with next step
});
}).end();
您应该在{1}
中放置下一步的代码。在提出请求后立即放置它将无法正常工作。