ES6——Promise

promise

含义:异步编程解决方案

特点:1、状态不受外界影响,状态有三种:pending、fulfilled、rejected

           2、状态不可逆,只能pending -> fulfilled、pending -> rejected

缺点:无法取消、不设置回调函数时,内部错误外部无法获知、pending状态时不知具体进度

执行顺序:Promise执行 -> 同步代码执行  ->then执行 (事件循环机制)

若一个promise的resolve将一个promise作为参数,那么这个promise的状态会失效,转而以参数的promise状态为准。

resovle、reject不会阻止后续代码的执行,所以推荐在resovle和reject前添加return

promise.then

返回一个新的promise实例,可以实现链式调用,接受两个参数,第一个是resovle的回调函数,第二个是reject的回调函数

promise.catch

.then(null, rejection)、.then(undefined,rejection)的别名,捕获错误

推荐在链式调用之后,添加catch,他会捕获整个过程中的所有报错

promise.finally (ES2018)

不管promise执行结果是什么,都会执行finally函数

promise.all 

含义:将多个promise实例包装成一个新的promise实例

参数:参数是具有iterator接口的数组或类数组,如果参数不是promise,会首先调用promise的resovle转换成promise,然后执行。

执行结果:都是fulfilled,其状态为fulfilled,

                  一个是rejected,其状态为rejected

                   结果顺序与参数顺序一致

                  多promise执行结果是并的关系

注意: 如果参数有自己的catch方法,promise.all的catch就不会捕获到这个错误,因为参数的catch执行完返回了一个promise是resolve。

promise.race 

与.all含义、参数都一致。

执行结果:只接收第一个执行结束的promise结果。多promise执行结果是或的关系

众多参数执行是或的关系。

promise.allSettled 

与all和race参数一致,

执行结果:不受任何一个promise的结果影响,会一直执行完所有promise,然后结果变成fulfilled。返回结果为数组对象。

 promise.any 

参数与上述函数一致

执行结果:一个fulfilled,其状态变为fulfilled

                 全部rejected,其状态为rejected

promise.resovle

将一个现有对象转为一个promise对象

1、参数是promise,不做修改直接返回

2、参数是thenable对象,转为promise对象,直接执行then方法

3、不是thenable对象,或根本不是对象,转为resovled状态的promise

4、没有参数,转为promise

promise.reject

返回一个promise对象,状态为rejected。

promise.try

参数是同步,则同步执行,参数是异步,则异步执行

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

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

相关文章

mysql数字开头字符串排序

表结构 CREATE TABLE building (id bigint NOT NULL,name varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT 名称,full_name varchar(255) CHARACTER SET utf8mb3 COLLATE utf8_general_ci DEFAULT NULL COMMENT 全称,PRIMARY KEY (id) USIN…

javascript 将json数据导出excel

<el-button type"primary" plain v-on:click"jsonToExcel();">导出</el-button>jsonToExcel() {const data this.AlarmData;let head "城市,站点,时间,A相电流(A),B相电流(A),C相电流(A),SO2压力(MPa),CO压力(MPa),NOX压力(MPa),A相电压…

总结930

之前本打算每天学12h&#xff0c;践行了一周&#xff0c;一天最多也就学11.5h,在时间利用上感觉已经趋于饱和的了。 这个时候&#xff0c;时间统计法应该能发挥它应有的作用了&#xff0c;但就算详细记录每日时间支出&#xff0c;也不能从根本上解决问题。 一味的进行时间上的…

基于Springboot的宠物店管理系统(源代码+数据库)087

基于Springboot的宠物店管理系统(源代码数据库)087 一、系统介绍 本系统分为管理员、店员两种角色 店员角色包含以下功能&#xff1a; 登录、宠物主人管理、宠物管理、宠物医疗管理、宠物销售管理、宠物寄养管理、宠物用品管理、宠物日常服务管理、宠物常见问题、个人中心、…

Appium Android ——利用 TestNG 并行执行用例

目录 前言&#xff1a; 一、测试类 二、连接两个 Android 设备或启动两个虚拟机 三、项目路径下新建两个 testng.xml 四、开启两个 appium server 五、导出依赖 六、执行测试 七、查看报告 前言&#xff1a; Appium是一个流行的移动应用自动化测试工具&#xff0c;…

RAID6故障导致分区打不开的服务器数据恢复案例

服务器数据恢复环境&#xff1a; 一台infortrend存储&#xff0c;有一组由12块硬盘组建的RAID6&#xff0c;RAID6的所有空间划分给一个LUN并映射到WINDOWS系统上&#xff0c;WINDOWS系统上划分了一个GPT分区。 服务器故障&分析&#xff1a; 存储无法访问&#xff0c;经过检…

【代码随想录13】前 K 个高频元素

题目 给定一个非空的整数数组&#xff0c;返回其中出现频率前 k 高的元素。 示例 1: 输入: nums [1,1,1,2,2,3], k 2输出: [1,2] 示例 2: 输入: nums [1], k 1输出: [1] 提示&#xff1a; 你可以假设给定的 k 总是合理的&#xff0c;且 1 ≤ k ≤ 数组中不相同的元素…

北京汽车:传统车厂向“用户服务”转型的新范本

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 摘要&#xff1a;用户决定价值 英国大文豪狄更斯曾在《双城记》中说&#xff1a;“这是最好的时代&#xff0c;也是最坏的时代”。大浪淘沙之下&#xff0c;汽车产业…

C#为什么不能成为大学编程入门的首选?

大学编程入门不以C#作为首选的原因有多个因素。虽然C#是一种功能强大的编程语言&#xff0c;但在大学编程入门阶段&#xff0c;通常会选择其他语言作为首选&#xff0c;以下是一些可能的原因&#xff1a; 我这里刚好有嵌入式、单片机、plc的资料需要可以私我或在评论区扣个6 …

编程小白的自学笔记九(python爬虫入门+代码详解)

系列文章目录 编程小白的自学笔记八&#xff08;python中的多线程&#xff09; 编程小白的自学笔记七&#xff08;python中类的继承&#xff09; 编程小白的自学笔记六&#xff08;python中类的静态方法和动态方法&#xff09; 编程小白的自学笔记五&#xff08;Python类的…

【运维小知识】(一)——centos系统安装(小白入门级)

目录 1.制作系统U盘 2.安装centos系统 3.系统配置 3.1【语言】配置​编辑 3.2【软件选择】配置 3.3【安装位置】配置 3.4【主机名、root密码、网络】配置 1.制作系统U盘 首先下载软件ventoy&#xff0c;制作系统U盘&#xff0c;买个新U盘。先在笔记本电脑安装ventoy软件&a…

学员管理系统——面向对象

文章目录 前言基本思路Student.pymain.pyStudentManage.py菜单 menu()根据菜单实现程序的大概逻辑add_student() 添加学员信息delete_student() 删除学员信息modify_studnet() 修改学员信息search_student() 查找学员信息print_student() 显示所有学员信息save_student() 保存学…