AJAX-综合

文章目录

    • 同步代码和异步代码
    • 回调函数地狱
    • 解决回调函数地狱
      • Promise-链式调用
      • async函数和await
      • async函数和await-捕获错误
    • 事件循环
    • 宏任务与微任务
    • Promise.all静态方法


同步代码和异步代码

  • 同步代码:逐步执行,需原地等待结果后,才继续向下执行
  • 异步代码:调用后耗时,不阻塞代码继续执行(不必原地等待),在将来完成后触发一个回调函数

在这里插入图片描述

回调函数地狱

概念:在回调函数中嵌套回调函数,一直嵌套下去就形成了回调函数地狱
缺点:可读性差,异常无法捕捉,耦合性严重,牵一发而动全身

解决回调函数地狱

Promise-链式调用

概念:依靠then()方法会返回一个新生成的Promise对象特性,继续串联下一环任务,直到结束
细节:then()回调函数中的返回值,会影响新生成的Promise对象最终状态和结果
好处:通过链式调用,解决回调函数嵌套问题
在这里插入图片描述

async函数和await

async函数是AsyncFunction构造函数的实例,并且允许使用await关键字。aysnc和await关键字让我们用一种更简洁的方式写出基于Promise的异步代码,而无需刻意地链式调用Promise。
概念:在async函数内,使用await关键字取代then函数,等待获取Promise对象成功状态的结果值

async函数和await-捕获错误

使用:try...catch
标记要尝试的语句块,并指定一个出现异常时抛出的响应。
语法:

try {// 要执行的代码
} catch (error) {// error接收的是错误信息// try里代码,如果有错误,直接进入这里执行
}

事件循环

概念:JavaScript有一个基于事件循环的并发模型,事件循环负责执行代码、收集和处理事件以及执行队列中的子任务。
原因:JavaScript单线程,为了让耗时代码不阻塞其他代码运行,设计了事件循环模型
定义:执行代码和收集异步任务的模型,在调用栈空闲,反复调用任务队列里回调函数的执行任务,就叫事件循环。
执行过程:

  • 执行异步代码,遇到异步代码交给宿主浏览器环境执行
  • 异步拥有结果后,把回调函数放入任务队列排队
  • 当调用栈空闲后,反复调用任务队列里的回调函数

宏任务与微任务

异步任务分为:

  • 宏任务:由浏览器环境执行的异步代码
  • 微任务:由JavaScript引擎环境执行的异步代码
任务(代码)执行所在环境
JavaScript脚本执行事件(script)浏览器
setTimeout/setInterval浏览器
AJAX请求完成事件浏览器
用户交互事件浏览器
Promise对象.then()JavaScript引擎

注意:Promise本身是同步的,而then和catch回调函数是异步的
执行过程:

  • 执行第一个script脚本事件宏代码,里面同步代码
  • 遇到宏任务/微任务交给宿主环境,有结果回调函数进入对应队列
  • 当执行栈空闲时,清空微任务队列,再执行下一个宏任务,从1再来

在这里插入图片描述

Promise.all静态方法

概念:合并多个Promise对象,等待所有同时成功完成(或某个失败),做后续逻辑
在这里插入图片描述
语法:

const p = Promise.all([Promise对象,Promise对象,...])
p.then(result => {// result结果:[Promise对象成功结果,Promise对象成功结果,...]
}).catch(error =>{// 第一个失败的Promise对象抛出的异常
})

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

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

相关文章

英语面试研究

系统架构师面试常用英语词汇和表达详细总结 系统架构师的面试通常会涉及到一些专业的英语词汇和表达,这些词汇和表达有助于更准确地描述架构设计、技术选型、系统优化等方面的内容。以下是一些常用的英语词汇和表达,以及它们在面试中的潜在用途&#xf…

阿里云效流水线—发布公用jar到Maven私仓

后端项目发布 1.选择流水线 2.新建流水线 3.选择模板 4.选择代码仓库 5.调整构建命令 添加mvn install 重新构建项目 6.添加镜像 在wms-app目录下新建Dockerfile文件(Dockerfile文件名中的D一定要是大写的)文件,重新推送项目 #基础镜像 FROM openjd…

【力扣hot100】1. 两数之和 49.字母异位词分组 128. 最长连续序列

目录 1. 两数之和题目描述做题思路参考代码 49.字母异位词分组题目描述做题思路参考代码 128. 最长连续序列题目描述做题思路参考代码 1. 两数之和 题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数…

EPO企业生产运营数智化平台助力制造企业迈向智能制造

随着“中国制造2025”和工业4.0的不断推进,越来越多的制造企业准备迈入智能制造和智慧制造领域,实现数智化管理。企业通过搭建EPO企业生产运营平台,结合自身业务现状和数字化需求,从各个业务场景、部门人员、产品组成等方面进行分…

Django缓存(二)

一、视图缓存 Django的缓存可以设置缓存指定的视图,具体方式使用django.views.decorators.cache.cache_page, 方法有2种方式: 装饰器:以方法以装饰器的方式使用 from django.views.decorators.cache import cache_page@cache_page(60 * 15,cache="default") def…

【算法每日一练]-图论(保姆级教程篇16 树的重心 树的直径)#树的直径 #会议 #医院设置

目录 树的直径 题目:树的直径 (两种解法) 做法一: 做法二: 树的重心: 题目: 会议 思路: 题目:医院设置 思路: 树的直径 定义:树中距离最…

科技革新背后:码垛机器人在不同领域的实践应用

随着科技的进步,机器人技术已经渗透到各个行业之中,成为提高生产效率、减少人工成本的重要工具。码垛机器人作为自动化技术的杰出代表,其在各个行业中的应用场景日益广泛,从食品饮料到化工产品,再到物流仓储&#xff0…

睿考网:注册会计师考试有年龄限制吗?

参加注册会计师考试是否有年龄限制?现行的规定并没有要求考生的年龄,所以只要符合既定的报名条件任何人都是可以参加的。 报名资格要求如下: 1. 报考者须为中国国籍公民,并且具备完全的民事行为能力。 2. 学历要求方面&#xf…

nginx配置ssl支持https的详细步骤

nginx配置ssl支持https的详细步骤 文章概要:在建站的时候我们通常要让网站通过https进行访问,不然使用http过程中,所有信息都是未加密的,并且用户访问的时候浏览器会屏蔽我们的网站。本文介绍如何通过nginx配置ssl以支持通过https…

CSS的特殊技巧

1.精灵图 使用精灵图核心总结: 1. 精灵图主要针对于小的背景图片使用。 2. 主要借助于背景位置来实现--- background-position 。 3. 一般情况下精灵图都是负值。(千万注意网页中的坐标: x轴右边走是正值,左边走是负值&#xf…

Spring设计模式-实战篇之策略模式 + 工厂模式

案例:使用策略模式和工厂模式优化大量的if-else 原先代码如下,有衣服、零食、蔬菜三种类型的商品,并且每一类满减折扣不一样,如果使用if-else,代码会显得非常冗长,并且大量的if-else很容易眼花导致维护代码…

Mybatis DAO开发

使用Mybatis开发Dao,通常有两个方法,即 原始Dao开发方法Mapper代理开发方法 原始DAO开发方式 原始Dao开发方法需要程序员编写Dao接口和Dao实现类,无非就是在Dao实现类里面调用映射文件里面定义的sql而已。 工具类 package org.example.u…

海康威视-AIOT的业务转型

海康威视的转型和定位为智能物联网(AIoT)解决方案和大数据服务的提供商。 公司不仅仅聚焦于其核心的视频监控业务,而且正在积极拓展到新的技术领域和市场。通过专注于物联感知、人工智能、大数据等技术的创新,对未来技术发展方向的…

ptx指令,抽象指令与架构

(没用的问题:ptx如何抽象sass,它创造ir的方式和结果与mlir 创造ir有什么区别吗?) PTX操作数类型: 寄存器操作数:在PTX中,寄存器用于存储临时数据,并在指令之间传递值。寄…

生产计划数据模型,实现能源企业数字化高效管理

随着市场经济的快速发展,能源企业在经济发展中的地位也随之提高。但由于能源企业在生产计划经济管理上存在指标不平衡、市场观念落后和环保意识欠缺等问题,导致企业的经济效益降低。目前,提高企业的生产计划管理是改善能源企业现状最有利的途…

计算机网络:物理层下的传输媒体概览

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

MySQL---视图

目录 一、介绍 二、语法 三、视图的更新 四、视图作用 一、介绍 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲&#…

Git常用指令总结

Git常用指令总结 下载git,这个不需要交的!!! 1、初始化自己的git仓库 git config --global user.name “Your name” 配置自己的用户名 git config --global user.email “mailexample.com” 配置邮箱 git config --global c…

blender记一下法线烘焙

这里主要记一下使用cage的方式 原理 看起来是从cage发射射线,打中高模了就把对应uv那个地方的rgb改成打中的点的normal的rgb 正事 那么首先需要一个高模 主要是几何要丰富 无所谓UV 然后一个低模,既然上面提到UV,那低模就要展UV, 展完之后…

Ambari——编译——解决解决windows和linux下phantomjs链接超时问题

您的支持是我继续创作与分享的动力源泉!!! 您的支持是我继续创作与分享的动力源泉!!! 您的支持是我继续创作与分享的动力源泉!!! 错误日志: [INFO] Copying extracted folder C:\Users\LENOVO\AppData\Local\Temp\phantomjs\phantomjs-2.1.1-windows.zip-extract-1786692…