объект / json разрушение внутри выборки (затем) - PullRequest
0 голосов
/ 28 марта 2020

Не знаю, если это хороший вопрос, так как я новичок в JavaScript, но я хочу использовать деструктуризацию в fetch api, получая ошибку:

Uncaught (в обещании) TypeError: ответ не повторяется

Где проблема и как ее решить? если возможно, вы могли бы написать две версии с ответом. json и одну без. заранее спасибо.

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width">
  <style>

  </style>
</head>

<body>
  <script>
    fetch("https://o", {
      method: "GET",
      headers: {
        "Content-type": "application/json",
        "X-API-Key": "***"
      }
    })
      .then((response) => {
        //   response.json().then(function(json) {
        const [b] = response

        //console.log(json)
        console.log(b)
      });
//   })
  </script>

</body>

</html>

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

если хотите, вы также можете использовать выборки таким образом;

fetch(url).then(response => response.json()
.then(data => //you can use whatever action you want to do there

Первый затем возвращает элемент ответа вам, и вы преобразуете этот элемент ответа в формат json. Во втором случае вы получаете доступ к элементу формата json и используете его как хотите.

Если вы хотите узнать больше об этой теме, вы можете выполнить поиск объекта Promise.

Если вы хотите, вы также можете использовать структуру asyn c -await для запросов API. Это короче и более понятно.

async function getData(){
const response = await fetch(**your url**);
const data = await response.json();
return data; 
}

Таким образом, использование делает то же самое с методом выборки. Удачи !

0 голосов
/ 28 марта 2020

Скорее всего, response не является массивом.

Если response имеет свойство с именем b, я бы попытался выполнить деструктурирование следующим образом:

const { b } = response;

Подумайте примерно так:

const response = { b: { text: 'text', num: 123 } };
const { b } = response;
console.log(b);

Надеюсь, это поможет!

...