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

Aaj*_*aje 3 callback return-value node.js aws-lambda

这是在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?');
        };

};
Run Code Online (Sandbox Code Playgroud)

现在我确实得到了我想在控制台中打印的消息.但我想使用exports.handler中的回调函数显示在控制台中打印的相同消息.

我尝试在exports.handler中使用各种方法使用回调函数,但我总是得到null.我明白在节点js脚本中所有的函数调用都是异步的,所以如何从任何函数返回一个值并在exports.handler中回调相同的内容,即在执行结果中显示相同的值.

Lev*_*ker 12

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

回调(response_error,response_success)

module.exports.publisher = (event, context, callback) => 
{
   callback(response_error, response_success)
}
Run Code Online (Sandbox Code Playgroud)

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

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)
}
Run Code Online (Sandbox Code Playgroud)

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


dus*_*sty 5

你应该调用callback函数本身 - 作为参数传递的函数exports.handler.

例如:

exports.handler = (event, context, callback) => {
      mqfunc1(callback);
};

var mqfunc1 = function(callback) {
    callback({'result': 'success'});
};
Run Code Online (Sandbox Code Playgroud)

  • 请记住,回调函数的第一个参数是错误,第二个是成功 (2认同)