Как использовать обещание в AWS Lambda? - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь создать лямбда-функцию для отправки сообщения в 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');
};

Мой вопрос: как я могу сделать возврат в моих then и catch функциях?

На самом деле, лямбда-возврат null.(Хорошо, потому что я не вернулся в свою основную функцию).Поэтому, если моя функция не сработала, Lambda возвращает ответ (200).

Возможно, я не правильно использую Lambda и Promise.Более того, я не совсем понимаю ключевое слово await до (event) => {.Я вынужден удалить его, иначе моя функция не работает.

1 Ответ

0 голосов
/ 08 ноября 2018

Ваша лямбда-функция должна будет возвращать ответ. Например, если вы строите свой ответ как:

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

somedata can be a message if you do not return any important data.

тогда возвращаешь callback(null, response). Кстати, вам не хватает обратного вызова из параметра функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...