首页 > 其他分享 >获取请求; .then 和 async/await 的区别

获取请求; .then 和 async/await 的区别

时间:2022-09-20 12:12:22浏览次数:88  
标签:异步 请求 代码 await async 方法 fetch

获取请求; .then 和 async/await 的区别

javascript 中的异步代码可能会令人困惑、棘手且难以理解。但是,异步代码使我们的程序更加高效、易用,现代网页完全依赖它!作为开发人员,理解和实现异步代码是我们学习的试金石。最常用的异步代码位之一是 fetch() 方法。 fetch 方法是一种用于跨网络异步获取资源的 javascript 方法。对于大多数刚开始的项目,您将从数据库中获取信息并将其显示在页面上。让这个方法在你的程序中实现起来稍微有点棘手是因为有很多方法可以实现它。在为您的目标研究解决方案时,您遇到了多种完成此任务的方法。响应 fetch() 返回的承诺的两种最流行的方法是 .then 和 async/await 语法响应。在本文中,我不仅会详细介绍如何将语法上的 .then 表达式转换为 async/await 表达式,还会详细说明这些方法适用于哪些情况。

首先,我们需要了解这段代码的最终目标。从 10,000 英尺的角度看;它们响应从 fetch 方法返回的已解决的承诺对象。根据承诺的解决方式,我们将获取该对象并根据我们的目标在其上运行一系列进一步的方法。本文将坚持最常见的 fetch 用例之一。即从 API 获取数据并将这些数据显示在我们的网页上。

学习如何完成响应 fetch 的已解决承诺的任务的最常见方法是使用 .then 方法。让我们来看看 ;

在这段代码中,我们可以看到我们正在获取已解析的 Promise 对象,然后对接收到的数据运行一些方法,以将其转换为更可用的格式以供我们操作。 .then 可以解释为“当这个 Promise 被解决时,然后执行这段代码。”通常在一两个 .then' 之后,我们会看到

这种执行 fetch 方法的方法工作得很好,但是,有一种更现代、更整洁的方法来做到这一点。让我们看一下,然后我们将对其进行分解。

首先,我们可以看到整个函数被包裹在 async 中,即指定以下代码是异步的,并且是 javascript 正确编译所必需的。

在这部分代码中,我们可以看到我们正在使用关键字 await 分配一个变量。在异步承诺解决之后,等待之后的这部分将被分配给变量!我们以我们在 javascript 中使用的单线程方式将这些项目链接在一起!

除了简单地使用更现代的语法来这样做之外,还有很多原因。

一——async/await 语法读起来更像同步代码,更容易理解

二——async/await 非常适合需要按顺序执行的代码,这在 fetch 请求中很常见。在解决前一个步骤之前,我们无法继续前进。

三 - .then 在显示需要并行操作的加载符号或代码时或在解决承诺的其余部分时可能更有效。

现在你可能会问——如果 Promise 解析错误,我们如何捕捉?这是一个很好的问题。看一看;

这称为try-catch。如果在 try 块执行期间的任何时候出现错误,javascript 将跳转到 catch 代码块。 catch 块接受一个参数;错误并允许您对所述错误执行所需的响应。

总结这一切;在我的旅途中,我经常遇到这种语法,感到害怕和困惑,但经过一点点的回顾和反思,我发现 async/await 语法更干净,更容易阅读,但也有一个警告,它不能运行并行块,因此在某些情况下,使用我们可信赖的 .then 语法可能会更好。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38168/59222011

标签:异步,请求,代码,await,async,方法,fetch
From: https://www.cnblogs.com/amboke/p/16710592.html

相关文章

  • 如何在 React 中进行 Axios POST 请求?
    如何在React中进行AxiosPOST请求?我们将制作一个AxiosPOST请求创建数据或将数据插入数据库。我们将在POST请求中发送请求参数,并且还将举例发送HTTP标头。在......
  • MAUI页面导航-await Shell.Current.GoToAsync();
    示例:Shell.Current.GoToAsync("..");//导航到前一页Shell.Current.GoToAsync(nameof(NotePage));//导航到Note页Shell.Current.GoToAsync($"{nameof(NotePage)}?{......
  • Fiddler抓包15-使用urlreplace 替换请求url地址
    前言在前后端分离,前端独立开发过程中,需对本地ip地址转发到其它ip上,那么需用到本地代理。我们可以使用fiddler的urlreplace命令替换请求url地址,到达转发请求的目的。u......
  • curl命令查看请求响应时间
    curl-o/dev/null-s-w%{time_namelookup}::%{time_connect}::%{time_starttransfer}::%{time_total}::%{speed_download}www.baidu.com0.005::0.005::0.006::0.006:......
  • uniapp配置网络请求
    网络请求自己配置的uni网络请求 由于平台的限制,小程序项目中不支持axios,而且原生的uni.request()API功能较为简单,不支持拦截器等全局定制的功能。因......
  • jQuery伪造post请求
     导出使用场景:当前端需要传非常多的参数数据,就需要用到post导出get请求:window.location.href="/CustomOrder/MapRowLinePlan/PlanUseCommunityDown?appCode=CTMS&dat......
  • 36. 网络加载框架OkHttp的同步与异步请求
    36.网络加载框架OkHttp的同步与异步请求36.1简介官方地址https://github.com/square/okhttpandroid网络框架之OKhttp一个处理网络请求的开源项目,是安卓端最火热......
  • [基础] BS/CS 区别 Http/Https 区别 中间件请求
    BS和CS的区别:   1、BS结构:Browser-Server-从浏览器到服务器,浏览器打开的所有内容都属于BS(三大主流浏览器Safari、Chrome和Firefo)   2、CS结构:Clinet-Server-Windo......
  • GET请求和POST请求方式
    $(()=>{constgetUrl='http://www.liulongbin.top:3006/api/getbooks';constpostUrl='http://www.liulongbin.top:3006/api/addbook';......
  • EventLoop中的async和await
    直接先来看一道题:asyncfunctionasync1(){console.log('async1start')awaitasync2()console.log('async1end')}asyncfunctionasync2(){console.lo......