Как можно извлечь данные из объекта Promise?

Как мне правильно использовать async/await в следующем тестовом коде, чтобы получить данные из API и избежать получения ответа в виде Promise { undefined }? Вот мой текущий код: 

<pre><code class="javascript">async function one() {fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits')
.then(res =&gt; res.json()) 
.then(data =&gt; {
  test = data;
  });
}
console.log(one())</code></pre>

Я прочитал, что необходимо использовать async/await, но не смог реализовать это. Можете помочь?
  • 14 сентября 2024 г. 13:53
Ответы на вопрос 2
Да, конечно! Чтобы использовать `async/await` и извлечь данные из объекта `Promise`, вам нужно сделать несколько изменений в вашем коде. Использование `async/await` позволяет более удобно и читабельно работать с асинхронным кодом.

Вот как можно переписать ваш код:

```javascript
async function one() {
  try {
    const response = await fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits');
    const data = await response.json();
    console.log(data); // Здесь вы можете работать с данными
  } catch (error) {
    console.error('Ошибка при выполнении запроса:', error);
  }
}

one(); // Теперь вы вызываете функцию one(), которая выполнит асинхронный код
```

### Объяснение изменений:

1. **`await`**:
   - С помощью `await` вы «ожидаете» завершения промиса, возвращаемого `fetch`, и затем обрабатываете результат.
   - Так же происходит и с `response.json()`, где вы также ожидаете данные, прежде чем продолжить.

2. **Обработка ошибок**:
   - Обернули код в блок `try/catch` для обработки возможных ошибок, которые могут возникнуть при выполнении запроса.

3. **Логирование данных**:
   - Вместо сохранения данных в переменную `test` (которая не объявлена в вашем коде), мы просто выводим их в консоль с помощью `console.log(data)`.

Теперь, когда вы вызываете функцию `one()`, она выполняет асинхронный запрос и выводит данные в консоль, вместо того чтобы возвращать объект `Promise`.
Значит плохо читали. Прочитайте еще раз и выполните упражнения: https://learn.javascript.ru/promise 
async function one() {fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits')
.then(res => res.json()) 
.then(data => { console.log(data) });
}
console.log(one())
Похожие вопросы