Web前端高级工程师培训:异步处理专题

news2024/11/24 10:32:41

异步处理专题

课前准备

  • 工具
    • 编辑器 VSCode
    • 浏览器 Chorme
  • 前置知识
    • ES6基础语法

课堂主题

  • 同步及异步概念
  • 方块运动的实现
  • promise的用法
  • then的返还值
  • Async 函数 和 await

课堂目标

理解并学会使用promise使用方式以及async 、await的使用

同步异步概念

  • js是单线程

    • 单线程:同一时间只能做一件事情
    • 为什么是单线程?
      • 为了避免复杂性
  • 同步和异步

    • 同步和异步是一种消息通知机制

      • 同步阻塞: A调用B,B处理获得结果,才返回给A。A在这个过程中,一直等待B的处理结果,没有拿到结果之前,需要A(调用者)一直等待和确认调用结果是否返回,拿到结果,然后继续往下执行。

      ​ 做一件事,没有拿到结果之前,就一直在这等着,一直等到有结果了,再去做下边的事

      • 异步非阻塞: A调用B,无需等待B的结果,B通过状态,通知等来通知A或回调函数来处理。

      ​ 做一件事,不用等待事情的结果,然后就去忙别的了,有了结果,再通过状态来告诉我,或者通过回调函数来处理。

在这里插入图片描述

异步处理方案

  • 回调

    • 通过回调函数来处理异步,容易造成回调地狱
      • 回调地狱:函数作为参数层层嵌套。回调地狱会导致代码可读性及可维护性变差。
  • 自定义事件

方块运动实现

  • 回调运动框架方块的运动

promise使用

  • ES6 Promise 对象

    • 两种参数:then的2个参数;onresolove 和 onreject;

    • ES6的Promise对象是一个构造函数,用来生成Promise实例。
      所谓Promise对象,就是代表了未来某个将要发生的事件(通常是一个异步操作)。
      它的好处在于,有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数

    • Promise对象的三种状态 pending 、resolve 和 reject

    • then 方法

    • then的返回值,会返回一个新的 Promise 对象, 但是状态会有几种情况:

      • then 的回调函数中没有返回值,then就会返回一个状态为: resolved 的 promise 对象
      • then 的回调函数返回值是 非 promise 的值, then就会返回一个状态为: resolved 的 promise 对象,另外会把返回值,传递给 下一个 then
      • then 的回调函数返回值是 promise 对象,then 就直接返回这个 promise 对象,具体的状态可以由我们自己定义,具体传递的值,也由我们自己定义
    • Promise 下的方法:resolve、reject、all、race、finally

async及await 改造promise

  • Async 函数 和 await 改造promise;

  • try及catch方法捕获错误

总结

  1. 同步和异步
  2. Promise 写法
  3. promise状态
  4. then的返还值
  5. Async 和 await 写法

下节课预告

Promise原理解析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2212533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

动态规划-多状态问题——LCR.090.打家劫舍

1.题目解析 题目来源:LCR.090.打家劫舍——力扣 测试用例 2.算法原理 1.状态表示 每一个房子都有两个状态:被偷与不被偷,因此需要两个dp表f/g来表示被偷与不被偷,其中f[i]/g[i]表示小偷走到第i个位置的最大偷钱数 2.状态转移方程…

【开源物联网平台】Fastbee系统稳定性和压测报告

目录 一、机器准备 二、压测步骤 2.1 去除认证,修改clientid识别问题 2.2 添加重发布脚本 三、压测结果 四、压测工具使用 一、机器准备 准备两台服务器,一台为部署fastbee服务端应用,另一台为客户端压力机。其中: fastbee…

TensorRT-LLM七日谈 Day3

今天主要是结合理论进一步熟悉TensorRT-LLM的内容 从下面的分享可以看出,TensorRT-LLM是在TensorRT的基础上进行了进一步封装,提供拼batch,量化等推理加速实现方式。 下面的图片更好的展示了TensorRT-LLM的流程,包含权重转换&…

动态规划-简单多状态dp问题——面试题17.16.按摩师

多状态问题的核心就是每个位置不止有一个状态,因此需要多个dp表表示不同状态对应位置的值,然后根据题目考虑特定情况写出状态转移方程即可 1.题目解析 题目来源:面试题17.16.按摩师——力扣 测试用例 2.算法原理 1.状态表示 这里与路径问…

红米AC2100路由器原官方固件关闭IPv6防火墙

红米AC2100路由器原官方固件关闭IPv6防火墙 问题背景 我家里宽带开通了IPv6,并且获得了公网的IPv6地址。在同一Wi-Fi内部,可以使用公网IPv6正常访问。 但是,当我切换为手机流量,也就是公网环境,访问就失败了。 问题…

苹果最新论文:LLM只是复杂的模式匹配 而不是真正的逻辑推理

大语言模型真的可以推理吗?LLM 都是“参数匹配大师”?苹果研究员质疑 LLM 推理能力,称其“不堪一击”!苹果的研究员 Mehrdad Farajtabar 等人最近发表了一篇论文,对大型语言模型 (LLM) 的推理能…

<<迷雾>> 第11章 全自动加法计算机(5)--顺序取数 示例电路

顺序地从存储器里取数的电路方案. info::操作说明 在开始之前, 地址计数器 AC 需要清零, 以指向地址 0000. 按一下开关 KAR, 将 AC 当前的地址锁存到 AR 地址寄存器. 按住 KRD, 不要松开(注: 系统中使用的是普通开关, 无需按住), 再按一下 KDR, 数据保存到寄存器 DR 中, 最后,…

Mapstruct的使用备忘【代替BeanUtils高效率属性拷贝】

文章目录 Mapstruct的使用备忘【代替BeanUtils高效率属性拷贝】1. 引入mapstruct依赖2. 数据准备2-1 准备一个子类,TestData2-2 准备两个类,SourceData,TargetData,属性完全一样 3. 定义Mapper接口【注:这里的Mapper是…

AIGC毕设项目分享:基于RAG的数字人对话系统及其应用

本研究的主要目标是设计并实现一个基于检索增强生成(RAG)技术的数字人对话系统,旨在提升数字人系统在多轮对话中的上下文管理、情境感知能力以及动态内容生成效果。系统结合了深度学习中的最新大语言模型技术,通过引入RAG框架来增…

概率论基础01_事件概率

目录 一、事件 1、概率 1.1基本事件 1.3必然事件 1.4不可能事件 1.5样本空间 1.6样本点 2、事件间的关系 2.1包含关系 2.2并集 2.3交集 2.4差集 2.5互斥事件 2.6对立事件 2.7完备事件组 3、运算律 3.1交换律 3.2结合律 3.3分配律 3.4对偶律 二、概率 1、…

10.MySql全局参数优化

从上图可以看出SQL及索引的优化效果是最好的,而且成本最低,所以工作中我们要在这块花更多时间。 一、全局参数 配置文件my.ini(windows)或my.cnf(mac)的全局参数: 假设服务器配置为: CPU:32核 内存:64G…

2025推荐选题|基于MVC的农业病虫害防治平台的设计与实现

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,…

机器视觉AI场景为什么用Python比C++多?

好多开发者在讨论机在机器视觉人工智能领域的时候,纠结到底是用Python还是C,实际上,Python 和 C 都有广泛的应用,选择 Python而不是 C 可能有以下一些原因: 语言易学性和开发效率 语法简洁: Python 语法简…

【部署篇】Redis-01介绍‌

一、Redis介绍‌ 1、什么是Redis? ‌Redis,英文全称是Remote Dictionary Server(远程字典服务),Redis是一个开源的、使用‌ANSI C语言编写的‌Key-Value存储系统,支持网络、可基于内存亦可持久化。‌ 它提…

Android Compose 控件基本属性

本文的代码由上一篇文章的Demo进一步书写完成, 传送门:Android Compose的基本使用-CSDN博客 _____________________________________________________________________________ 以下代码分别列举了控件的: 内边距,外边距,内容居中,渐变自定义边框,宽度权重,string资源引用等…

走进面向对象编程的奇妙世界

在当今的编程领域,面向对象编程(Object - Oriented Programming,简称 OOP)犹如一颗璀璨的明星,照亮了软件开发的道路。 面向对象编程是一种基于对象概念的编程范式。那么,什么是对象呢?对象可以…

Windows系统C盘爆满了,如何清理?

Windows系统C盘爆满了,如何清理? 大家好,我是秋意零。 相信使用过Windows系统的朋友,都见过C盘那道靓丽的 “红色风景线” ! 我自己的Win10系统,已经使用了4-5年时间了。最近频频出现"红色风景线&q…

免费送源码:Java+Springboot+MySQL 水环境检测系统的设计与实现 计算机毕业设计原创定制

摘 要 在我国,水源的污染是不可忽视的问题。对于水质监测进行数据的采集工作,目前主要通过人工实现。因此,部分地区的采集工作,实施起来难度很大,比如恶劣环境和偏僻山区等地。所以,目前对于水质监测的研究,主导方向是建立更加高效完善,智能化的水质监测系统。近几年,无线传感器…

OpenUAV:首个专为现实无人机视觉语言导航设计的大规模轨迹数据集,由大约 12k 个轨迹组成,涵盖了多种环境和复杂的飞行动态。

2024-10-10,由北京航空航天大学人工智能研究所、香港中文大学MMLab以及感知与交互智能中心共同创建了OpenUAV数据集,首个专为现实无人机(UAV)视觉语言导航(VLN)任务设计的大型轨迹数据集,该数据…

java数据库操作-cnblog

创建lib目录,填入jar包 选择 libraries添加lib目录 package nb;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException;public class JDBCtest {private static final String url "jdbc:mysql://localhost:3306/test?c…