我正在使用aws-sdk将消息上传到kinesis。效果很好,但我正在尝试解决该操作不起作用的时间(由于互联网中断或其他原因)。
这是我正在运行的代码。
const returnValue = kinesis.putRecord(params, (err, data) => {
if (err) {
logger.info(err);
return err;
} else {
logger.info(data);
return data;
}
});
console.log(returnValue);
我希望找回错误或数据。相反,我得到的是我假设的kinesis.PutRecord请求本身的一个巨大的json。
关于为什么我没有将数据返回到我的returValue变量的任何想法?
控制台会记录数据和错误。
更新:
正如评论中指出的,我需要将函数包装在promise中。我还把它放在了一个尝试陷阱中,因为如果您在没有抓住的情况下抛出“拒绝”,则会得到未处理的承诺拒绝。
此处更新了代码:
try {
const returnValue = await new Promise(function(resolve, reject){
kinesis.putRecord(params, (err, data) => {
if (err) {
logger.info(err);
reject(err);
} else {
logger.info(data);
resolve(data);
}
});
});
logger.log(returnValue);
} catch (error) {
logger.error(error);
return error;
}