异步/等待

异步/等待

异步/等待

与 promise 相比,async/await 是一种更新的异步代码编写方式。 async/await 的主要优点是提高了可读性并避免了承诺链。 promise 可能会变得很长、难以阅读,并且可能包含难以调试的深层嵌套回调。

例子

回想一下我们之前的获取。

fetch('https://jsonplaceholder.typicode.com/todos/1')  .then(response => response.json())  .then(data => console.log(data))  .catch(error => console.error('error:', error))  .finally(() => console.log('all done'));

使用 async/await,代码可以重构为如下所示:

async function fetchdata() {  try {    const response = await fetch('https://jsonplaceholder.typicode.com/todos/1');    const data = await response.json();    console.log(data);  } catch (error) {    console.error('error:', error);  } finally {    console.log('all done');  }}fetchdata();

虽然可能多了几行代码,但这个版本更容易阅读,因为它类似于普通的同步函数。此外,如果 .then() 语句内的函数更复杂,则可读性和可调试性将受到更大的影响。 async/await 示例更加清晰。

示例 2:从餐厅订餐

async/await 的结构

async/await 函数有两个基本部分:async 和await。 async 关键字加在函数声明前,await 用于异步任务开始时。

让我们以从餐厅点餐的例子来说明这一点:

// simulate the order process with async/awaitasync function foodorder() {  console.log("ordering food...");  await new promise(resolve => settimeout(resolve, 2000)); // wait 2 seconds for food to be prepared  return "your food is ready!";}// simulate the eating processfunction eatfood(order) {  console.log(order); // this logs "your food is ready!"  console.log("enjoying the meal!");}// simulate continuing the conversationfunction continueconversation() {  console.log("while waiting, you continue chatting with friends...");}async function orderfood() {  console.log("you've arrived at the restaurant.");  const order = await foodorder(); // place the order and wait for it to be ready  continueconversation(); // chat while waiting  eatfood(order); // eat the food once it arrives}orderfood();

输出将是

You've arrived at the restaurant.Ordering food...While waiting, you continue chatting with friends...Your food is ready!Enjoying the meal!

以上就是异步/等待的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1493102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 15:24:14
下一篇 2025年12月19日 01:36:18

相关推荐

  • 了解幂等操作:它们是什么以及它们为何重要

    在编程、API 和数学领域,幂等一词经常出现。虽然听起来很复杂,但一旦分解了这个概念,幂等操作实际上就很容易理解。本质上,幂等操作是一种可以多次执行而不会改变初始应用程序之外的结果的操作。本文探讨了幂等的含义、它在不同领域的相关性,以及为什么开发人员和工程师必须理解它。什么是幂等性?幂等性是指某些操…

    2025年12月19日
    000
  • 掌握 JavaScript Promise:Polyfill 和高级技术指南

    简介:解锁 javascript 的异步能力 浏览 javascript 的异步功能可能很复杂,但掌握它们可以显着提高您的编码技能和应用程序性能。在本指南中,我们深入研究 javascript promise 的基本工具,特别关注如何为 promise.any、promise.allsettled …

    2025年12月19日
    000
  • 使用 React、Nodejs 和 MongoDB 构建高性能全栈应用程序:可扩展性、速度和解决方案之旅

    您打开生产应用程序,发现它正在停止运行。前端没有响应。后端 api 超时。 mongodb 查询似乎无限期地运行。您的收件箱里充满了用户投诉。您的团队挤在一起尝试对情况进行分类。 去过吗?是的,我也是。 我是一名高级全栈开发人员,我厌倦了一些应用程序,这些应用程序在您仅作为单个用户使用时很好,或者问…

    2025年12月19日
    000
  • JavaScript ESelease 笔记:释放现代 JavaScript 的力量

    javascript es6,正式名称为 ecmascript 2015,引入了重大增强功能和新功能,改变了开发人员编写 javascript 的方式。以下是定义 es6 的前 20 个功能,它们使 javascript 编程变得更加高效和愉快。 javascript es6 的 20 大功能 1 …

    2025年12月19日
    000
  • Unlock Your Coding Interview Success: ame-Changing Patterns You Must Know! Explained with JavaScript code examples

    准备编码面试可能是一项艰巨的任务,尤其是候选人可能面临大量问题。然而,理解关键模式可以显着简化准备过程并提高解决问题的能力。这篇文章深入探讨了对于有效应对编码挑战至关重要的八种基本模式。 1. 两个指针 两个指针技术是解决涉及数组和链表等线性数据结构问题的强大方法。通过使用两个遍历数据结构的指针,候…

    2025年12月19日
    000
  • 在 HTML 中添加 Javascript 文件的最佳方法

    在 html 中,有多种方法可以包含 javascript 文件。我将解释四种不同的方法及其缺点,最后强调最佳方法。 1. 在 document 在这种方法中,在解析代码时,首先在 body 内的 html 之前加载 javascript 文件,如果 javascript 尝试操作 body 中尚未…

    2025年12月19日
    000
  • Things I Wish I Knew When I Started with React

    3 年 react 开发的经验教训 当我第一次投入 react 时,感觉就像打开了潘多拉魔盒。有很多东西要学,一路上,我遇到了很多“啊哈!”的情况。时刻。以下是我希望在开始时就知道的 10 件事,以帮助您在 react 之旅中跳过一些减速带。 1. 组件只是函数 最重要的认识是什么? react 组…

    2025年12月19日
    000
  • 构建无障碍网站:最佳实践

    建立一个无障碍网站可确保您的内容可供所有人(包括残疾人)使用。可访问性不仅有助于使您的网站具有包容性,而且也是改善用户体验和遵守网络标准的关键因素。在本博客中,我们将探讨构建无障碍网站的最佳实践以及如何实施它们。 为什么可访问性很重要 包容性:全球有超过 10 亿人患有某种形式的残疾。无障碍网站可确…

    2025年12月19日
    000
  • 顶级挂钩 |电子商务用例

    以下是前 7 个 React Hook 及其基本定义: useState 定义:一个允许您向功能组件添加状态的钩子。它返回一个包含当前状态值的数组和一个更新它的函数。 示例: const [count, setCount] = useState(0); 使用效果 定义:一个钩子,允许您在功能组件中执…

    2025年12月19日
    000
  • TutorMundi:Meteorjs 如何为拉丁美洲领先的教育科技平台之一提供支持

    建立一个成功的教育技术 (EdTech) 平台具有挑战性。对于 TutorMundi 联合创始人兼技术主管 Bart Sterm 来说,这段旅程的特点是持续适应、高效的资源利用以及使公司能够无缝扩展的战略技术堆栈。 TutorMundi 是一款将巴西学生与导师联系起来的教育科技应用程序,从一开始就依…

    2025年12月19日
    000
  • 原生js如何打包

    原生JS打包将原始JavaScript代码编译成优化形式,以增强加载速度、减少带宽消耗和提高安全性。可用工具包括Webpack、Rollup、Parcel和Browserify。打包过程涉及安装工具、创建配置文件、添加源代码、运行构建命令和优化捆绑包。优点包括更快的加载时间、更低的带宽消耗和更高的安…

    2025年12月19日
    000
  • JS如何引用代码

    JavaScript 中引用代码有两种主要方法:使用 标签从 HTML 文档中引用外部脚本,以及使用 import() 函数在 JavaScript 模块中动态导入模块。选择方法取决于浏览器支持、模块化需求和动态加载的必要性。 如何在 JavaScript 中引用代码 JavaScript 中引入外…

    好文分享 2025年12月19日
    000
  • js如何for循环

    在 JavaScript 中,for 循环可按特定步长对序列中的元素进行迭代,适用于已知循环执行次数的情况。(1) 循环变量在 for 语句圆括号内声明,使用 let 关键字。(2) 循环体在条件为 true 时执行。(3) 使用 continue 和 break 语句可控制循环流。 JavaScr…

    2025年12月19日
    000
  • js如何定义队列

    队列在 JavaScript 中是一种先进先出(FIFO)的数据结构。使用数组实现队列,队列操作包括入队、出队、队首元素和队列大小。使用链表实现队列可以更有效地处理大型队列。 JavaScript 定义队列 在 JavaScript 中,队列是一种先进先出(FIFO)的数据结构,这意味着最早添加的元…

    2025年12月19日
    000
  • 如何开始使用 NodeJS – 初学者手册

    Node 是一个可以在“Web 浏览器之外”运行JavaScript代码的环境。它使用 Google 的 V8 引擎将 JavaScript 代码转换为机器代码。由于 Node 在 Web 浏览器之外运行 JavaScript 代码,这意味着它无法访问仅在浏览器中可用的某些功能,例如 DOM 或窗口…

    2025年12月19日
    000
  • js如何获得加密

    如何用 JavaScript 获取加密功能?有三种方法:使用 Crypto API:生成密钥并导出为 base64 编码的字符串。使用第三方库:CryptoJS[sodium.js] 等库提供加密算法和便捷 API。使用在线服务:使用 AWS KMS、Google Cloud KMS 或 Azure…

    2025年12月19日
    000
  • js如何设置空格

    JavaScript 中设置空格的方法有四种:1. 字符串连接运算符;2. String.prototype.padStart() 和 String.prototype.padEnd();3. 预先定义的空格字符串 String.fromCharCode(32);4. HTML 实体 ( )。 如何…

    2025年12月19日
    000
  • mvc如何生成js

    在 MVC 架构中,生成 JavaScript 的方法包括:直接在视图中编写 JS。使用 JS 库或框架。通过控制器生成 JS 代码。使用 Razor 语法动态生成 JS。这些方法的好处是分离关注点、代码重用和动态生成。 MVC 如何生成 JS 在 MVC 架构中,生成 JavaScript 的过程…

    2025年12月19日
    000
  • js如何抓去class

    要使用 JavaScript 提取页面元素的 class 属性,可:获取元素引用访问 .class 属性分割 class 值(可选) 如何使用 JavaScript 提取页面元素的 class 属性 要使用 JavaScript 提取页面元素的 class 属性,可以使用以下步骤: 1. 获取元素引…

    2025年12月19日
    000
  • js 如何设置高度

    在 JavaScript 中设置高度有以下几种方法:直接设置元素的 height 属性。使用 CSSOM 界面中的 offsetHeight 或 clientHeight 属性。使用 jQuery 中的 height() 方法。 如何在 JavaScript 中设置高度 直接设置元素的 height…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信