В приведенном ниже фрагменте кода я использую then
для получения результата обещания. Однако response
не возвращается. Возвращается Promise { <pending> }
.
Я зарегистрировал response
и вижу, что он правильно вернул данные, а не ожидающее обещание. Так почему же он возвращает отложенное обещание? Я даже добавил вызов then
к вызову describeTable
, и он все равно возвращается в ожидании.
Я прочитал следующие вопросы, и они не помогли, поэтому, пожалуйста, не отмечайте их как дубликаты:
Как вернуть ответ на асинхронный вызов?< /а>
async/await неявно возвращает обещание?
const AWS = require('aws-sdk');
AWS.config.update({region: 'eu-west-2'});
const docClient = new AWS.DynamoDB;
async function describeTable() {
const params = {
TableName: 'weatherstation_test',
};
let response;
try {
response = await docClient.describeTable(params).promise().then(result => result);
console.log(response); // Logs the response data
} catch (e) {
console.error(e)
throw e;
}
return response;
}
console.log(describeTable().then(result => result)); // Logs Promise { <pending> }
Обновить
Поэтому я удалил первую then
(после promise()
), потому что она избыточна. Ответ от @libik работает для меня. Это был контекст, в котором запускается then
, которого я не понимал.
await
, нет необходимости в построенииthen
. - person Daniyal Lukmanov   schedule 21.10.2019.then(...)
- person Daniyal Lukmanov   schedule 21.10.2019