Переписать как асинхронно + Переписать без стрелочных функций - PullRequest
0 голосов
/ 19 июня 2020

Я изучаю код для веб-разработки и в настоящее время работаю с JavaScript и Node.js - мне нужно (A.) переписать код без использования каких-либо стрелочных функций и (B.) переписать код, используя асинхронный режим. / await function.

fetch("https://www.googleapis.com/books/v1/volumes?q=isbn:0747532699")
.then(res => res.json())
.then((result) => {
      items= result.items;
      console.log(items);
    }),
  (error) => {
   console.log(error);
  } 

Любая помощь будет принята с благодарностью, я пытался найти помощь, но просто не могу понять ее.

Ответы [ 3 ]

0 голосов
/ 19 июня 2020

Во-первых, чтобы читать стрелочные функции, вы должны понимать, что есть два способа вернуть значение в стрелочных функциях:

const func = x => x * x;  // concise body syntax, implied "return"          
const func = (x, y) => { return x + y; };  // with block body, explicit "return" needed

Теперь следующее будет go через шаги по преобразованию кода с использованием цепочку обещаний в код с использованием async/await. Выполнив задачу B (замените цепочку обещаний на async/await), вы завершите задачу A (код без стрелочных функций)

Если метод возвращает Promise, например fetch и Body.json() do, вы можете дождаться его результата:

const res = await fetch("https://www.googleapis.com/books/v1/volumes?q=isbn:0747532699");
const result = await res.json();
items = result.items;
console.log(items);

Чтобы обработать ошибку без цепочки .catch, вы оберните код блоком try/catch:

try {
  const res = await fetch(
    "https://www.googleapis.com/books/v1/volumes?q=isbn:0747532699"
  );
  const result = await res.json();
  items = result.items;
  console.log(items);
} catch (error) {
  console.log(error);
}

Наконец, ключевое слово await может может использоваться только внутри asyn c функции docs , поэтому вам нужно обернуть его в функцию, объявленную с async:

async function run() {
  try {
    const res = await fetch(
      "https://www.googleapis.com/books/v1/volumes?q=isbn:0747532699"
    );
    const result = await res.json();
    items = result.items;
    console.log(items);
  } catch (error) {
    console.log(error);
  }
}
run();

Вы также должны знать, что любая функция объявленный с ключевым словом async, также возвращает обещание, которое вы можете ждать.

0 голосов
/ 19 июня 2020

А)

fetch("https://www.googleapis.com/books/v1/volumes?q=isbn:0747532699")
.then(function(res) { return res.json() })
.then(function(result) {
      const items= result.items;
      console.log(items);
    })
  .catch(function(error) {
   console.log(error);
  })

Б)

async function getItems() {
  let results;
  try {
    const response = await fetch("https://www.googleapis.com/books/v1/volumes?q=isbn:0747532699")
    results = await response.json()
  } catch (e) {
    return new Error('error......')
  }

  return results.items
}
const items = await getItems()
console.log(items)
0 голосов
/ 19 июня 2020

Ты про это так? Пожалуйста, дайте мне знать, если это то, что вы хотите, и если вам нужна дополнительная информация

async function getBooks() {
  try {
    const fetchResponse = await fetch("https://www.googleapis.com/books/v1/volumes?q=isbn:0747532699");
    const result = fetchResponse.json();
    const books = result.items;
    console.log(books);
  } catch(error) {
    console.log(error);
  }
}

// await getBooks();
...