📜  fetch js async await - Javascript (1)

📅  最后修改于: 2023-12-03 14:41:10.527000             🧑  作者: Mango

使用Fetch以及Async/Await在JavaScript中进行异步操作

在JavaScript中,我们经常需要对远程数据进行请求和处理。传统的方式是使用XMLHttpRequest对象,但它的不太友好的API使得使用起来很麻烦。现在,我们有一个更好的选择: 使用fetch函数去请求远程数据。同时,我们也可以使用async/await语法去管理异步操作,这可以让我们的代码更加清晰易懂。

Fetch函数

Fetch函数是一个新的标准函数,它允许我们使用基于Promise的API去获取远程数据。它有一些优点:

  • 更好的API:相比于之前使用的XMLHttpRequest对象,Fetch函数有更好的API形式。你可以更好地把它们放入你的代码中,并且更容易控制请求和响应。

  • 内置JSON解析:它默认返回的是带有解析方法的promise对象。这意味着它可以自动解析JSON格式的响应,而不需要手动解析。

让我们看一下一个Fetch函数怎么使用:

fetch('https://jsonplaceholder.typicode.com/posts/1') // 发送GET请求
    .then(response => response.json()) // 解析响应
    .then(data => console.log(data)); // 打印数据

以上代码将打印出带有postId为1的帖子数据的JSON对象。

使用Fetch函数时,您可以设置请求的各种选项(例如:headers、body 和 method)。以下是带有POST数据发送Fetch请求的示例:

fetch('https://jsonplaceholder.typicode.com/posts/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    title: 'foo',
    body: 'bar',
    userId: 1
  })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

在上面的示例中,我们发送一个POST请求,带有JSON格式的数据在请求体中发送。Fetch返回一个Promise对象,可以使用.then()函数来访问数据或抛出错误。

Async/Await

使用async/await语法糖是一种更加简单、直观的管理异步代码的方法。使用async/await时,您可以按照“同步”的方式书写异步代码:将所有异步请求放在“async”函数之中,使用“await”关键字等待异步响应被解决(即:响应被获取),这样后续的代码才得以顺序执行。

下面是一个使用async/await方法发送带有Fetch API的请求的示例:

async function fetchAsync () {
  try {
    const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');
    const data = await response.json();
    console.log(data);
  } catch (e) {
    console.error(e);
  }
}

在上例中,我们首先定义了一个“async”函数,然后使用“await”等待每个异步请求得到响应。如果任何异步操作抛出错误,该函数将引发异常,从而使代码能够使用“catch”块处理这些错误。

虽然对于一些简单的异步操作,回调函数的方式能够正常工作,但当您开始编写大量异步代码时,async/await会为您提供更好的代码可读性和可维护性。

结论

Fetch与async/await的组合,是JavaScript异步操作的旋风变化。Fetch使得获取远程数据变得更加容易,而async/await语法又把异步代码管理变得更加加容易,清晰易懂。当你需要编写异步JavaScript代码时,强烈建议使用Fetch和async/await组合的方式。