如何在AWS Lambda中使用Promise?

时间:2018-11-08 12:46:40

标签: javascript lambda promise

我尝试创建一个lambda函数以在Slack中发布消息。

const { WebClient } = require('@slack/client');

const token = '...';
const web = new WebClient(token);
const channel = '#...';

exports.handler = (event) => {
    console.log('First');

    web.chat.postMessage({ 
        channel: channel, 
        username: '...',
        icon_emoji: '...', 
        text: 'Hello world'
    })
        .then(() => {
            console.log('Ok');

            return {
                statusCode: 200
            };
        })
        .catch((error) => {
            console.log('Error', error);

            return {
                statusCode: 500,
                body: error
            };
        });

    console.log('Finish');
};

我的问题:如何在thencatch函数中返回返回值?

实际上,lambda返回null。 (好的,因为我还没有返回主函数)。因此,如果我的函数失败,Lambda仍会返回一个答案(200)。

也许我没有正确使用Lambda和Promise。此外,我不太了解await之前的关键字(event) => {。我被迫删除它,否则我的功能将无法正常工作。

1 个答案:

答案 0 :(得分:0)

您的lambda函数将需要返回响应。 例如,如果您将响应构造为:

// cancel the unique work instance.cancelUniqueWork(TAG); // clear all finished or cancelled tasks from the WorkManager instance.pruneWork();

const response = { 
     statusCode: 200, 
     body: JSON.stringify(somedata) 
 }

然后您将其作为回报somedata can be a message if you do not return any important data. 。顺便说一句,您缺少来自functions参数的回调。