Код js, который используется тогда и ожидает разрешения, обещает одновременно

#javascript

Вопрос:

Мой товарищ по команде написал код:

 const getItem = async () => { 
  const res = await axios.get('/items/123214324').then(r => 
  r.data.item).catch(err => console.log(err))

  return res
}

 

Я думаю, что это абсолютная катастрофа(если мы используем async/await, то мы не используем then/catch, и наоборот). Но он говорит это хорошо. Кто прав?

Комментарии:

1. Рекомендуется придерживаться либо API promise, либо await . Но в этом нет необходимости . Нет никакого технического недостатка в смешивании того и другого. Проблема в том, что читать код может быть немного сложнее. Единственная проблема здесь в том, что если возникнет проблема, вы получите только журнал в консоли, но await он будет продолжен. Возможно, это нормально. Возможно, и нет. Но это единственная потенциально неправильная вещь в коде.

2. сложнее читать код — главная причина не использовать его…

3. Поэтому правило таково: если вы хотите это сделать — просто сделайте, если вам нужен читаемый код — просто не делайте этого.

4. Здесь есть одна проблема, заключающаяся в том, что ошибка не передается по цепочке. Таким образом, показанный улов будет возвращен undefined в getData().then()

5. Смешивание этих двух не обязательно означает, что код труднее читать. IMO data = await fetch(url).then(r => r.json()) более удобочитаем, чем result = await fetch(url); data = await result.json(); или даже data = await (await fetch(url)).json() . В основном это вопрос мнения. Общая рекомендация именно такова — рекомендация, а не правило.