ES6——Promise

news2024/10/6 6:47:04

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.coloradmin.cn/o/748196.html

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

相关文章

常见的人体静电消除器的工作原理

人体静电消除器是一种用于消除人体带有静电的装置。静电是指物体表面具有电荷的现象,当人体带有静电时,会导致一些不舒适的感觉,同时也容易引起电击事故。 人体静电消除器的工作原理主要通过以下几个方面来实现: 1.接地&#xf…

深入篇【Linux】学习必备:认识冯诺依曼系统+理解操作系统(‘‘管理‘‘)

深入篇【Linux】学习必备:认识冯诺依曼系统理解操作系统(管理) Ⅰ.冯诺依曼系统结构1.特点(what)2.理解(why)3.案例(how) Ⅱ.操作系统概念与定位1.概念(what)2.设计OS目的(why)3.管理(how) Ⅰ.冯诺依曼系统结构 1.特点(what) 我们认识的计算机&#xff…

ETHERCAT转ETHERCAT网关三菱plc支持ethercat吗

大家好,今天要和大家分享一款神器——远创智控YC-ECAT-ECAT通讯网关!这款网关有什么厉害的呢?且听我慢慢道来。 首先,YC-ECAT-ECAT是一款自主研发的ETHERCAT从站功能的通讯网关。那什么是ETHERCAT呢?简单来说&#xff…

揭秘ChatGPT的流式返回

107. 揭秘ChatGPT的流式返回 ChatGPT是一种强大的语言模型,可以生成自然语言响应。在传统的请求/响应模型中,客户端发送请求,服务器处理请求后返回响应。但是,使用流式返回可以实现持续的数据流,使得客户端能够实时接…

水文水动力模型在城市内涝、城市排水、海绵城市规划设计中深度应用

随着计算机的广泛应用和各类模型软件的发展,将排水系统模型作为城市洪灾评价与防治的技术手段已经成为防洪防灾的重要技术途径。将聚焦于综合利用GIS及CAD等工具高效地进行大规模城市排水系统水力模型的建立,利用SWMM实现排水系统水力模拟。讲解SWMM深度…

rabbitmq使用springboot实现fanout模式

一、fanout模式 类型&#xff1a;fanout特点&#xff1a;Fanout—发布与订阅模式&#xff0c;是一种广播机制&#xff0c;它是没有路由key的模式。 二、实现 1、引入相应的pom文件 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project x…

左神算法 重要技巧:递归的加速技巧(斐波那契数列套路)以及推广

目录 【案例1】【十分重要 &#xff1a; 斐波那契递归套路&#xff0c;只要像斐波那契这种严格递归都可以进行类似的优化】 【有严格的递归项后&#xff0c;通过线性代数的知识进行优化】 【代码实现】 【技巧推广】 【实例1 使用这个技巧】 【题目描述】 【思路解析】 …

求两个数的最大值max

函数实现 int max(int a, int b); 函数接收两个整数参数&#xff0c;在内部用if语句判断哪个大&#xff0c;返回大的即可。 完整代码 #include <iostream> using namespace std;int max(int a, int b) {if (a > b){return a;}else{return b;} }int main() {int n1…

开发工具篇第25讲:阿里云MFA绑定Chrome浏览器Authenticator插件

开发工具篇第25讲&#xff1a;阿里云MFA绑定Chrome浏览器Authenticator插件 本文是开发工具篇第25讲&#xff0c;登录阿里云旗下产品时&#xff0c;需要使用mfa登录&#xff0c;每次如果要用手机看mfa码很麻烦&#xff0c; Chrome浏览器提供了一个快捷的登录方法&#xff0c;可…

软件工程师,学习下JavaScript ES6新特性吧

概述 作为一名软件工程师&#xff0c;不管你是不是前端开发的岗位&#xff0c;工作中或多或少都会用到一点JavaScript。JavaScript是大家所了解的语言名称&#xff0c;但是这个语言名称是Oracle公司注册的商标。JavaScript的正式名称是ECMAScript。1996年11月&#xff0c;JavaS…

Mysql根据积分排名

积分表&#xff1a;t_participant_points 1、带并列 SELECT p.*, CASE WHEN prevRank p.total_points THEN curRank WHEN prevRank : p.total_points THEN curRank : curRank 1 END AS ranking FROM ( SELECT total_points …

LabVIEW-实现波形发生器

一、题目 用两种方法实现一种多类型信号波形发生器&#xff08;至少包括&#xff1a;正弦波、三角波、方波等&#xff09;&#xff0c;可以调节信号频率、幅度、相位等参数&#xff0c;可以图形化显示信号波形。 需要给出产生信号波形的基本方法、程序设计基本方法以及程序实现…

931.下降路径最小和

931.下降路径最小和 给你一个 n x n 的 方形 整数数组 matrix &#xff0c;请你找出并返回通过 matrix 的下降路径 的 最小和 。 下降路径 可以从第一行中的任何元素开始&#xff0c;并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列&#xff08;即…

【图像处理】经营您的第一个U-Net以进行图像分割

一、说明 AI厨师们&#xff0c;今天您将学习如何准备计算机视觉中最重要的食谱之一&#xff1a;U-Net。本文将叙述&#xff1a;1语义与实例分割&#xff0c;2 图像分割中还使用了其他损失&#xff0c;例如Jaccard损失&#xff0c;焦点损失&#xff1b;3 如果2D图像分割对您来说…

刘铁猛C#教程笔记——详解类型,变量和对象第二节

C#类型派生谱系 C#语言五大基本类型&#xff1a; 1.类类型&#xff1a;由class关键字声明的类型&#xff0c;常见的类类型有&#xff1a;string&#xff0c;object 2.结构体类型&#xff1a;由struct关键字声明的类型&#xff0c;常见的结构体类型有&#xff1a;int&#xff0c…

Vue3 基本语法

尤雨溪 文章目录 前言MVVM框架认识Vue文本渲染指令 v-text属性绑定指令title 属性动态绑定class属性动态绑定style 属性动态绑定 事件绑定 事件名条件渲染指令v-ifv-if 和 v-showv-else 和 v-else-if 循环遍历指令 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&am…

Documentation 代码注释文档规范

1. 代码注释文档规范的添加 /// 代码规范文档 struct DocumentationBootcamp: View {// MARK: PROPERTIESState var data:[String] ["Apples", "Oranges", "Bananas"]State var showAlert: Bool false// MARK: BODY// Code Folding : 代码折叠…

Spring Boot原理分析(二):IoC

文章目录 〇、IoC思想和IoC容器IoC体现了什么思想什么是IoC容器 一、Spring IoC容器的继承层次1.BeanFactory2.ListableBeanFactory3.HierarchicalBeanFactory4.ApplicationContext5.常用的ApplicationContext的实现类ClassPathXmlApplicationContext&#xff08;基于XML配置&a…

FreeRTOS详细目录结构和作用

FreeRTOS各个目录的功能简介 1. Demo目录&#xff1a;这个目录下主要包含了大量官方支持的微控制器和不同平台上的项目&#xff0c;包括常用的stm32和keil平台下进行开发的项目。我主要使用的是CORTEX_STM32F103_Keil和common两个目录&#xff0c;对系统进行精简的话可以只保留…

光伏行业中的设备自动化系统EAP:优化生产流程的重要工具

随着清洁能源的需求不断增长&#xff0c;光伏行业作为可再生能源的重要组成部分&#xff0c;正迅速发展。为了满足日益增长的市场需求&#xff0c;光伏企业需要提高生产效率、降低成本&#xff0c;并保证产品的质量和可靠性。 图.光伏面板&#xff08;pexels&#xff09; 在这…