异步重写+不带箭头功能重写

时间:2020-06-19 14:05:51

标签: javascript node.js asynchronous async-await arrow-functions

我正在学习Web开发的代码,目前正在使用JavaScript和Node.js- 我需要 (A.)不使用任何箭头功能就重写代码,并且 (B.)使用异步/等待功能重写代码。

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 :(得分:0)

您的意思是这样吗?请让我知道这是否是您想要的以及是否需要更多信息

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();

答案 1 :(得分:0)

首先,要阅读箭头函数,您必须了解有两种方法可以在箭头函数中返回值:

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

现在,以下内容将逐步完成将使用承诺链的代码转换为使用async/await的代码的步骤。通过完成任务B(用async/await替换承诺链),您将完成任务A(不带箭头功能的代码)

如果某个方法返回Promise,就像fetchBody.json()一样,您可以等待其结果:

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关键字只能在异步函数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关键字声明的任何函数也会返回一个Promise,您可以等待。

答案 2 :(得分:0)

A)

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);
  })

B)

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)