Я использую aws -sdk для загрузки сообщения в kinesis. Это работает нормально, но я пытаюсь решить, когда действие не работает (из-за того, что inte rnet не работает или что-то в этом роде).
Вот код, который я запускаю.
const returnValue = kinesis.putRecord(params, (err, data) => {
if (err) {
logger.info(err);
return err;
} else {
logger.info(data);
return data;
}
});
console.log(returnValue);
Я ожидаю получить ошибку или данные. Вместо этого я получаю огромное json от того, что я предполагаю, является сам запрос kinesis.PutRecord.
Есть идеи, почему я не возвращаю данные в мою переменную returValue?
Консоль прекрасно регистрирует данные и ошибки.
ОБНОВЛЕНИЕ:
, как указано в комментариях, мне нужно было обернуть функцию в обещание. Я также поместил его в ловушку try, поскольку, если вы бросаете «reject» без перехвата, вы получаете необработанное отклонение обещания.
Обновленный код здесь:
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;
}