Promise执行顺序

小编建议小伙伴们不要跳点看,每一点都是衔接,有比较的

本篇文章考查

①promise是同步任务还是微任务

②promise.then()什么时候执行,是微任务还是宏任务

③如何控制状态变化,不同状态变化,会执行哪个回调函数

 1、以下代码输出结果是什么?

let promise = new Promise((resolve,reject)=>{console.log(1);console.log(2);
})promise.then(()=>{console.log(3);
})
console.log(4);

(1)promise其实是一个同步任务,只有promise.then才是微任务

(2)promise有三个状态resolve、reject、pending,只有状态发生改变时,才会执行后面的.then

(3)因此最终输出结果,如下图

没有执行3:因为状态没变,resolve和reject没有执行

2、以下代码输出结果是什么?

let promise = new Promise((resolve,reject)=>{console.log(1);console.log(2);resolve()
})promise.then(()=>{console.log(3);
})
console.log(4);

与第1段代码只相差了resolve()被调用

resolve()被调用:意味着状态发生变化,.then微任务将被执行

3、以下代码输出结果是什么?

let promise = new Promise((resolve,reject)=>{console.log(1);console.log(2);reject()
})promise.then(()=>{console.log(3);
})
console.log(4);

与第1段代码只相差了reject()被调用

reject()被调用:将直接报错,因为reject()对应执行的是.catch

4、以下代码输出结果是什么?

let promise = new Promise((resolve,reject)=>{console.log(1);console.log(2);reject()
})promise.then(()=>{console.log(3);
}).catch((e)=>{console.log(e);
})
console.log(4);

与第3段代码区别在.catch

reject()被调用:执行.catch,但是由于e没有提供参数,所以是undefined

5、以下代码输出结果是什么?

let promise = new Promise((resolve,reject)=>{console.log(1);console.log(2);reject(5)
})promise.then(()=>{console.log(3);
}).catch((e)=>{console.log(e);
})
console.log(4);

与第4段代码区别在给reject()传参

reject()被调用:执行.catch,输出5

6、以下代码输出结果是什么?

let promise = new Promise((resolve,reject)=>{console.log(1);console.log(2);reject(5)
})promise.then(()=>{console.log(3);
},()=>{console.log(6);
}).catch((e)=>{console.log(e);
})
console.log(4);

与第5段代码区别在.then()有两个回调函数

.then被调用:有两个回调,则只执行第二个回调

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

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

相关文章

前端性能监控和错误监控

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

第二证券:股票交易时间以及规则是什么?

股票生意时间以及规则是什么? 1、股票生意时间 周一至周五上午9:30-11:30,下午13:00-15:00,周末以及法定节假日休市不进行生意。可是不生意不代表不能进行托付,股票在清算之后投资者就能够进行托付。股票的清算时间&…

Can‘‘t connect to MySQL server on localhost (10061)解决方法

参考文章 https://www.jb51.net/article/26505.htmhttps://www.jb51.net/article/26505.htm

什么是HTTP协议?

目录 概念 特点 请求数据格式 请求行 请求头 请求体 响应数据格式 响应行 响应头 响应体 相关的类 HttpServletRequest HttpServletResponse 概念 HTTP全称Hyper Text Transfer Protocol,即超文本传输协议,规定了浏览器和服务器之间数据传…

interface接口(学习推荐版)

接口组成部分 示例代码: 1.默认会在类型前面添加public staic final修饰变量,所以可省略 2.默认在方法前面添加public abstract修饰,但没有staic和final修饰 注意事项: 1、用staic final的变量就是常量 2、接口只能由成员变量&a…

思倍云荣膺2023年度“毕马威中国领先不动产科技企业50”

12月15日,毕马威在上海举办以“聚合力 筑未来”为主题的2023年度“毕马威中国领先不动产科技50”的报告发布会。思倍云荣登2023“毕马威中国领先不动产科技企业50”榜单。 随着AI和大数据的发力、区块链技术的发展和“元宇宙”概念的兴起,数字化正引领着…

ik分词器动态从数据库中加载数据无需重启

ik分词器加载mysql数据库中的热词库 1、下载elasticsearch-analysis-ik 源码包 下载elasticsearch-analysis-ik打开项目(https://github.com/medcl/elasticsearch-analysis-ik) 2、修改插件代码 (1)修改pom.xml中对应版本号 (2)org.wltea.analyzer.dic.Dictionary 单…

Python使用HTTP库发送GET请求的示例——轻松探索网络世界

大家好,今天我要给大家介绍一个非常实用的Python库——HTTP库,它可以帮助我们轻松地发送HTTP请求。今天,我们就来学习一下如何使用HTTP库发送GET请求。 首先,我们需要安装HTTP库。如果你还没有安装,可以通过pip命令进…

开源一个超好用的接口Mock工具——Msw-Tools

作为一名前端开发,是不是总有这样的体验:基础功能逻辑和页面UI开发很快速,本来可以提前完成,但是接口数据联调很费劲,耗时又耗力,有时为了保证进度还不得不加加班。 为了摆脱这种痛苦,经过一周的…

RK3588安装TVM-GPU版本

1.前言 RK3588还有相应的GPU可以使用,我们也可以配置相关的环境,进行GPU的使用 2. RK3588的GPU介绍 Mali-G610 是 Arm 公司开发的第三代 Valhall 架构的 GPU。它于 2022 年 7 月发布,面向中端和高端移动设备。 Mali-G610 采用 Armv9 架构&am…

c jpeg 理论霍夫曼 DC AC表,c程序实现正向逆向转换

此4张表是理论表,不是针对某张图片的特定表。如程序不统计生成某图片的专用霍夫曼表,应该也可用理论表代用。 1.亮度DC表 左边第一列是二进制位数,就是对此位数编码 中间一列是生成比特流的位数,右边是生成的比特流。 2.色度DC…

KSP音频抓包

1. 按照网上其他教程&#xff0c;安装KSP抓音频 Biu~笔记&#xff1a;高通蓝牙ADK&#xff08;38&#xff09;-- KSP in MDE - 大大通(简体站) Biu~笔记&#xff1a;高通蓝牙ADK&#xff08;22&#xff09;--DSP音频链路监听 - 大大通(简体站) <<Biu~笔记&#xff1a;高…