Вы не можете получить доступ к асинхронному контенту из синхронного.
Если вы хотите зарегистрировать его, вы должны сделать это изнутри, как это
describeTable().then(result => console.log(result))
В вашем случае вы регистрируете выходные данные асинхронной функции, которая всегда является обещанием.
Что действительно происходит: в Node.js сначала выполняется весь синхронный контент, а любой асинхронный контент помещается в событиецикл, который будет выполнен позже.
Итак, сначала выполняется
const AWS = require('aws-sdk');
AWS.config.update({region: 'eu-west-2'});
const docClient = new AWS.DynamoDB;
console.log(describeTable()
Функция вызывается, и затем она переходит внутрь функции. Поскольку это асинхронная функция, она будет выполняться синхронно до первого await
.
const params = {
TableName: 'weatherstation_test',
};
let response;
try {
response = await docClient.describeTable(params).promise()
Теперь это обещание добавляется в цикл обработки событий, чтобы выполнить его позже, а функция describeTable()
возвращается в синхронный контекст(журнал консоли) обещание, которое позже будет асинхронно связано через все ваши функции, и вы регистрируете это обещание (которое действительно ожидает рассмотрения).
И теперь ваш синхронный контекст заканчивается. До того, как вышеупомянутое обещание будет выполнено, ваше приложение может тем временем выполнить другие части (которые всегда одинаковы, взять событие из цикла событий, выполнить полную синхронную часть - которая может передать другие события в цикл событий, а затем принять другое событие и повторить)