Javascript Lambda函数即使添加了wait,也不运行其他异步函数
我有一个Lambda函数,它没有运行我正在使用的异步函数wait on。我猜还有其他东西是异步的,我需要等待它,尽管我不确定可以/应该等待什么,因为Javascript Lambda函数即使添加了wait,也不运行其他异步函数,javascript,node.js,asynchronous,redis,async-await,Javascript,Node.js,Asynchronous,Redis,Async Await,我有一个Lambda函数,它没有运行我正在使用的异步函数wait on。我猜还有其他东西是异步的,我需要等待它,尽管我不确定可以/应该等待什么,因为redis包的文档没有提到我看到的承诺或异步。我试着把await放在clienthmset…前面,但是VS-code说我不能等待。我有什么办法让它正常运行 这是我提出的最小可复制代码,注意本示例中没有包括的只有我的记录器、我的导入和我的客户端设置(有密码和主机名) CloudWatch日志中的日志显示消息日志正在查找中,但结果日志返回时除了日志级别之
redis
包的文档没有提到我看到的承诺或异步。我试着把await
放在clienthmset…
前面,但是VS-code说我不能等待。我有什么办法让它正常运行
这是我提出的最小可复制代码,注意本示例中没有包括的只有我的记录器、我的导入和我的客户端设置(有密码和主机名)
CloudWatch日志中的日志显示消息日志正在查找中,但结果日志返回时除了日志级别之外什么都没有。
loadRedis
声明为async
,但您不返回任何内容,因此它并没有真正等待任何内容
也许你只需要做:
const loadRedis = async (message) => {
return new Promise((resolve, reject) => {
return 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)
}
})
}
}
感谢您的回复,
redis
软件包不支持承诺,所以我猜这已经过时了。我以为它会通过“决心/拒绝”被呼叫而返回,我想不会吧?不,但你可以自己返回承诺。。。见编辑谢谢我会尝试一下,我以前做过类似的事情,但没有返回。最后有时间测试,效果非常好,非常感谢您的帮助。
const loadRedis = async (message) => {
return new Promise((resolve, reject) => {
return 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)
}
})
}
}