aws-lambda-nodejs:如何使用callback函数来返回我在aws-console中打印的值?

这是在aws lambda函数中运行的代码。

exports.handler = (event, context, callback) => { // TODO implement mqfunc1(func2); }; var func2 = function(data) { console.log('got data: '+data); }; var mqfunc1 = function(callback) { var myCallback = function(data) { console.log('got data: '+data); }; var usingItNow = function(callback) { callback('get it?'); }; }; 

现在我确实得到了我想要在控制台中打印的信息。 但是我想用exports.handler里面的callback函数在控制台上显示相同的消息。

我试着用exports.handler里面的各种方法使用callback函数,但是我总是得到空值。 我明白,在一个节点js脚本中,所有的函数调用都是asynchronous的,那么如何从任何函数返回一个值,并且在exports.handler中调用相同的函数,即在执行结果中显示相同的值。

这是lambda的旧版本,即Node.js运行时v0.10.42。 新的AWS版本callback有两个参数,即Node.js运行时v4.3或v6.10

callback(response_error,response_success)

 module.exports.publisher = (event, context, callback) => { callback(response_error, response_success) } 

我倾向于传递状态码,以防我的工作完成后使用结果:

 const response_success = { statusCode: 200, body: JSON.stringify({ message: 'ok' }), }; const response_error = { statusCode: 400, body: JSON.stringify({ message: 'error' }), }; if (error) { callback(response_error) } else { callback(undefined, response_success) } 

参考: http : //docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html

您应该调用callback函数本身 – 作为parameter passing给exports.handler

例如:

 exports.handler = (event, context, callback) => { mqfunc1(callback); }; var mqfunc1 = function(callback) { callback({'result': 'success'}); }; 
Interesting Posts