【发布时间】:2021-02-21 22:38:24
【问题描述】:
我有一个 Lambda 函数,它没有运行我正在使用 await 的异步函数。我猜其他东西是异步的,我需要等待它,尽管我不确定什么可以/应该等待,因为 redis 包的文档没有谈论我看到的承诺或异步。我尝试将await 放在clienthmset... 前面,但VS Code 说我等不及了。我有哪些选择可以让它正常运行?
这是我想出的最小可重现代码,请注意,此示例中唯一未包含的内容是我的记录器、我的导入和我的客户端设置(有密码和主机名)
const loadRedis = async (message) => {
client.hmset(`${message.region}:${message._id}`, message, (err, res) => {
if(err) {
logger.error(`Error: ${JSON.stringify(err)}`)
reject(err)
}
if(res) {
logger.info(`Response: ${JSON.stringify(res)}`)
resolve(res)
}
})
}
module.exports.loader = async (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
let input = JSON.parse(event.Records[0].body);
let message = input.Message
const result = await loadRedis(message)
logger.info(message)
logger.info(result)
let output = result
callback(null, output);
};
CloudWatch Logs 中的日志显示正在查找消息日志,但返回的结果除了日志级别之外一无所有。
【问题讨论】:
标签: javascript node.js asynchronous redis async-await