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

回到顶部