promise、async事件循环机制,你是CV工程师?

news2024/12/28 19:44:27

在面试的过程中如果不了解promise、async事件循环机制基本就会认为你是CV工程师

首先分析 async/await 其实是基于promise实现的,async 函数其实就是把 promise 做了一个包装
promise 是es6的语法,async/await 是es7的语法糖,所以我们先来分析一下 事件循环机制

事件循环机制

1.事件循环机制是为解决单线程代码执行不阻塞主进程一种机制,也就是我们所说的异步原理
2.因为JavaScript是单线程,事件循环机制是为了解决单线程阻塞、从上往下执行。执行完毕 => 判断是否微任务 => 判断是否有宏任务
3.整体的script(作为第一个宏任务)开始执行的时候,会把所有代码分为两部分:“同步任务”、“异步任务”;

  • 宏任务
    setInterval()
    setTimeout()
  • 微任务
    new Promise()后的.then与.catch函数
    async/await

1.promise里的then才会被加入微任务,他的resolve,是同步里的。
2.而async函数里遇到await之前的代码是同步里的,遇到await时,会执行await后面的函数,然后返回一个promise,把await下面的代码放入微任务,并且退出这个async函数。

-通俗易懂:

同步:一件事做完了才到另一件事(如果上一件事情没做完,就会一直卡在这里所以造成了阻塞)
异步:在做一件事请,这件事还没做完就开始做另一件事(互不影响,可以一起做事情)

promise

  • Promise,简单说就是一个容器,在里面进行处理出结果(成功或失败)。

  • Promise 一共有三种状态

    1.pending 初始状态

    2.fulfilled 成功状态

    3.rejected 失败状态

new Promise((resolve,reject) => {
    .then((data) => {               //接收传输成功的数据
        console.log(data);    
    })
    .catch((err) => {               //接收请求失败的数据
        console.log(err);         
    })
    .finally((all) => {            // 无论成功失败都会执行
        console.log(all);
    })
  • Promise.resolve
    将传递给它的参数填充 Fulfilled 到 Promise 对象后并返回这个 Promise 对象。

  • Promise.reject
    它的功能是调用该 Promise对象通过then指定的 onRejected函数,并讲错误(Error)对象传递给这个onRejected函数

  • Promise.then
    异步调用方式

  • Promise.all
    1.如果所有的Promise中有一个错误,走的是Promise.all().catch()这个。但是不影响其他 Promise 还是会正常执行,但不会返回结果
    2.特性:接受一个promise 对象的数组作为参数,同时开始、并行执行的,可以执行多个

  • Promise.allSettled
    1.Promise.allSettled()在你需要执行平行和独立的异步操作并收集所有结果时非常有效, 即使某些异步操作可能失败。
    2.特性:接受一个promise 对象的数组作为参数、同时开始、并行执行的,可以执行多个、但不会走catch

  • Promise.rece
    1.特性:接受一个promise 对象的数组作为参数、同时开始、并行执行的,可以执行多个、

这里我们重点理一下 Promise.rece 和 Promise.all() 的区别

  • Promise.all获得的成功结果的数组里面的数据顺序和Promise.all接收到的数组顺序是一致的
  • Promse.race是里面哪个结果获得的快,就返回那个结果,不管结果本身是成功状态还是失败状态。

亿点小知识:Promise本身是同步执行,.then是异步执行的

async / await

  • async/await 其实是基于promise实现的,async 函数其实就是把 promise 做了一个包装
    为什么那么说呢 我们看一下代码

async function Methods(){
    return "内容值"
}
/*
async 自动包装成Promise对象,等于
function Methods(){
    return new Promise((resolve) => {resolve("内容值")})
}
*/

总结:

共同点:两者都是处理异步请求的方式
不同点:

  • promise是返回的对象要用then().catch()去处理数据和捕获异常,而且书写方式是链式的,容易造成代码多层堆叠难以维护;
  • async await 则是通过try{}.cathc{}进行捕获直接抛出异常
    在这里插入图片描述
    以上就是《web面试—倚天屠龙》感谢大家的阅读
    如碰到其他的问题 可以私下我 一起探讨学习
    如果对你有所帮助还请 点赞 收藏谢谢~!
    关注收藏博客 作者会持续更新…

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

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

相关文章

​即将开幕!​2023 年金融营销科技价值发现论坛亮点前瞻

由神策数据主办 Hi-Finance、爱设计、亚马逊云科技 协办和支持的 开放融合 引领营销 5.0 新纪元 暨 2023 年金融营销科技价值发现论坛 即将于 6 月 9-10 日在中国杭州开幕 届时百余位金融数字化从业者将共聚一堂 探讨金融业发展的新思路、新路径、新趋势 2023 年,数…

Windows电脑怎么加密文件?文件加密方法介绍

Windows作为目前使用人数最多的电脑系统,是很多人办公、生活的必要工具。那么你知道在Windows系统中该怎么样加密文件吗?下面我们就来一起了解一下。 方法一:文件夹加密超级大师 想要做好文件加密并不容易,需要保障文件加密的安全…

APP外包开发第三方登录

APP开发过程中往往需要对接第三方的登录,国内的有微信、QQ、微博等,国外的有google、facebook等账号。对接第三方账号登录SDK可以方便用户快捷登录,是APP登录功能里一项重要的特性。今天和大家分享对接流程和注意事项,希望对大家有…

三维数字沙盘交互大数据可视化GIS地理信息系统第十课

三维电子沙盘交互无人机倾斜摄影大数据可视化GIS地理信息系统第十课 设置system.ini 如下内容 Server122.112.229.220 userGisTest Passwordchinamtouch.com 该数据库中只提供 成都市火车南站附近的数据请注意,104.0648,30.61658 在SDK中自带了一个自定义的基础面…

公司规定所有接口都用 post 请求,这是为什么?

文章来源:https://www.zhihu.com/question/336797348 目录 背景 get 与 post 的区别 所有接口都用 post 请求? 背景 最近在逛知乎的时候发现一个有趣的问题:公司规定所有接口都用 post 请求,这是为什么? 看到这个问…

正在改变一切的Ai聊天机器人

ChatGPT通过Al生成的内容让我们眼花缭乱,从一个聊天机器人转化成推动一个创新时代的技术,但,也并非人人都知道,那么,你知道Chatgpt到底是什么吗? 文章目录 前言一、什么是Chatgpt?二、如何使用C…

实用性网站推荐

1、自动去除背景图,上传图片后免费生成已去除背景的图片 ,对于有抠图需求的极为友好! https://www.remove.bg/zh/upload 2、生成各种比例的图片,自动调整图片尺寸大小 https://imagestool.com/zh_CN/resize-images.html 3、符号…

腾讯云服务器远程连接登陆的方法

腾讯云服务器怎么连接登录?腾讯云服务器支持多种远程连接方法,可以使用腾讯云管理控制台自带的远程连接工具,也可以使用第三方远程连接工具,如如PuTTY、Xshell等,Linux操作系统可以SSH登录,Windows可以使用…

力扣 37. 解数独

一、题目描述 编写一个程序,通过填充空格来解决数独问题。 数独的解法需遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。数独部分空格内已填入了数字&#xf…

优化 Three.js 渲染性能的实用技巧

个人主页: 左本Web3D,更多案例预览请点击》 在线案例 个人简介:专注Web3D使用ThreeJS实现3D效果技巧和学习案例 💕 💕积跬步以至千里,致敬每个爱学习的你。喜欢的话请三连,有问题请私信或者加微…

人工智能-实验三

第三次实验 一.实验目的 ​ 掌握分类算法的算法思想,包括朴素贝叶斯算法,决策树算法等。编写朴素贝叶斯算法进行分类操作。本实验主要是关于朴素贝叶斯算法的实现,在完成本实验时也复习了课程中学习的决策树分类算法的思想。 二.实验原理 …

武汉涉密系统集成资质申报的重点和难点浅析

企业想要申报涉密系统集成资质,首先要确定好申请的级别:涉密系统集成资质分甲级和乙级两个级别,这个一个是看公司体量,另外一个是看公司以后所承接的项目密级级别。级别确定好后还要确定申请哪个类别,涉密系统集成资质…

项目管理专业人员能力评价等级证书(CSPM)的级别介绍

2021年10月,中共中央、国务院发布的《国家标准化发展纲要》明确提出构建多层次从业人员培养培训体系,开展专业人才培养培训和国家质量基础设施综合教育。建立健全人才的职业能力评价和激励机制。由中国标准化协会(CAS)组织开展的项…

使用Go和Gin编写RESTFul API

使用Go和Gin开发RESTFul API 对应的代码仓库地址:gocode 本篇内容介绍如何使用Go和 Gin Web Framework来编写RESTFul API 服务的基础知识。如果你还对Go的基础操作不熟悉的话最好还是先看一下: 入门教程 Gin是一个Go语言的Web开发框架,它简化了构建Web应…

如何实现企业微信扫码登录?

开发内容:实现网页企业微信扫码登录 企业微信提供了OAuth的授权登录方式,可以让从企业微信终端打开的网页获取成员的身份信息,从而免去登录的环节。 企业应用中的URL链接(包括自定义菜单或者消息中的链接)&#xff0c…

新手git使用记录

文章目录 前言一、下载安装git二、使用git1.基本概念2.git初始化设置3.基本操作3.1、拉取远程仓库代码,修改后在提交3.2、新建分支,提交 总结 前言 几年前在学校还学了git怎么使用,毕业后公司用tfs,这东西真的拉,感觉…

将Apple Vision Pro和visionOS与计算机视觉结合使用

在2023年6月5日的WWDC大会上,苹果宣布推出多年来最大规模的硬件和软件组合产品。今年的“One more thing”(“还有一件事”)发布是苹果视觉专业版(Apple Vision Pro),这是一款集成了苹果生态系统的新型空间…

mybatis多数据源的SQL兼容

背景 最近公司要求支持国产数据库达梦,但达梦与PostgreSQL的语法有一些差异,需要做一些兼容操作。 操作步骤 本文采用dynamic-datasource-spring-boot-starter框架处理多数据源,多数据源配置如下spring:datasource:dynamic:primary: dm #设…

华为OD机试真题B卷 Java 实现【进制转换】,附详细解题思路

一、题目描述 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。 二、输入描述 输入一个十六进制的数值字符串。 三、输出描述 输出该数值的十进制字符串。不同组的测试用例用\n隔开。 四、解题思路 读取输入的十六进制数值字符串&…

Selenium Python教程第2章

2. Selenium 编程入门 2.1 简单用例 如果你已经安装好了selenium,你可以把下面的python代码拷贝到你的编辑器中 from selenium import webdriver from selenium.webdriver.common.keys import Keysdriver webdriver.Firefox() driver.get("http://www.pytho…