NodeJS获取异步返回值(回调)
我在互联网上读过有关回调的信息,但就我而言我还是听不懂。
我具有此功能,并且在运行时会记录到控制台。但是,现在我需要在另一个功能中使用此响应,而我正在努力做到这一点。
var asyncJobInfo = function(jobID, next) { var oozie = oozieNode.createClient({ config: config });
var command = 'job/' + jobID + '?show=info';
console.log("running oozie command: " + command);
oozie.get(command, function(error, response) {
console.log("*****response would dump to console here:*****");
// console.log(response);
return response;
});
};
这是我应该得到的地方:(这显然不起作用,因为它不等待响应。)
exports.getJobInfoByID = function(req, res) { var jobIDParam = req.params.id;
res.send(asyncJobInfo(jobIDParam));
}
我真的很难把头放在回调上,我在这里盯着自己瞎了。
回答:
回调无法返回值,因为它们将要返回的代码已经执行。
因此,您可以做几件事。一个传递回调函数,异步函数获取数据后,调用回调并传递数据。或传递响应对象并在异步函数中使用它
传递回调
exports.getJobInfoByID = function(req, res) { var jobIDParam = req.params.id;
asyncJobInfo(jobIDParam,null,function(data){
res.send(data);
});
}
var asyncJobInfo = function(jobID, next,callback) {
//...
oozie.get(command, function(error, response) {
//do error check if ok do callback
callback(response);
});
};
传递响应对象
exports.getJobInfoByID = function(req, res) { var jobIDParam = req.params.id;
asyncJobInfo(jobIDParam,null,res);
}
var asyncJobInfo = function(jobID, next,res) {
//...
oozie.get(command, function(error, response) {
//do error check if ok do send response
res.send(response);
});
};
以上是 NodeJS获取异步返回值(回调) 的全部内容, 来源链接: utcz.com/qa/427961.html