当前位置:网站首页>1.11今日学习
1.11今日学习
2022-08-02 03:23:00 【Ww597】
1.promise的学习
1.概念
(1)作用:Promise支持链式调用,可以解决回调地狱的问题
(2)是什么:Promise是异步编程的一种解决方案。简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果
(3)特点:
1:三种状态(pending)进行中、fulfilled/resolve(已成功)和 rejected(已失败)
2:一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled/resolve和从pending变为rejected。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)
3:PromiseResult:保存对象成功失败的结果,可以通过resolve,reject对成功失败结果的值进行修改。
4:Promise内部会立即同步调用,一旦创建promise就立即执行
(4)缺点:首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。第三,当处于pending状态时,无法得知目前进展到哪一个阶段
2.基本使用
3.具体介绍
(1)Promise.prototype.then()
then方法的第一个参数是resolved成功状态的回调函数,第二个参数是rejected失败状态的回调函数,它们都是可选的。
JS实现:
Promise实现
(2)Promise.prototype.catch()
指定失败的回调函数
(3)Promise.prototype.finally()
不管 Promise 对象最后状态如何,都会执行的操作
(4)Promise.resolve()
作用:将现有对象转为 Promise 对象,返回成功/失败的promise对象
(5)Promise.reject()
作用:将现有对象转为 Promise 对象,返回一个失败的promise对象
catch的err值与p3中的resolve的值相等
(6)Promise.all()
Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例
只有所有的promise都成功才成功(resolve)且返回每个成员的promise实例
只要有一个失败就直接失败(reject)且返回的是第一个失败成员的promise实例
Promise.allSettled 方法接受一个数组作为参数,数组的每个成员都是一个 Promise 对象,并返回一个新的 Promise 对象,不管每一个操作是成功还是失败,都会进行下一步操作
(7)Promise.race()
Promise.race()返回第一个实例率先改变状态的promise实例
(8)resolve和then哪一个先执行?
1.一般是先改变状态在执行回调,也可能先回调在改变状态
2.先改变状态再执行回调
在执行器中直接调用resolve或reject 和给then设置定时器
3.先回调在改变状态
在resolve/reject做一个异步任务
(9)如何中断promise链
return new Promise(()=>{} );将需要中断的地方改为pending,因为状态不改变它就无法继续往下执行
4.手写Promise对象
2.Set和Map数据结构
1.Set本身是一个构造函数,用来生成 Set 数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值
2.可以用来去重
3.Map类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。如果你需要“键值对”的数据结构,Map 比 Object 更合适
4.Map的操作
1.set方法设置键名key对应的键值为value,然后返回整个 Map 结构。如果key已经有值,则键值会被更新,否则就新生成该键
2.get方法读取key对应的键值,如果找不到key,返回undefined
3.has方法返回一个布尔值,表示某个键是否在当前 Map 对象之中
4.delete方法删除某个键,返回true。如果删除失败,返回false
5.clear方法清除所有成员,没有返回值
边栏推荐
- Phospholipid-Polyethylene Glycol-Aldehyde DSPE-PEG-Aldehyde DSPE-PEG-CHO MW: 5000
- 广州华为面试总结
- canvas--pie chart
- basic operator
- js takes the value of a feature at a certain position in the string, such as Huawei=> Huawei
- Redis simple study notes
- vue3 访问数据库中的数据
- 微信小程序云开发-证件照的实现
- 【装机】老毛桃的安装及使用
- display,visibility,opacity
猜你喜欢
DOM manipulation---magnifying glass case
网址URL
Error in render: “TypeError: Cannot read properties of null (reading ‘0‘)“ 报错解决方案
subprocess.CalledProcessError: Command ‘pip install ‘thop‘‘ returned non-zero exit status 1.
yolov5调用ip摄像头时出现的问题
npm--package.json---require
新工程加载YOLOV6的预训练权重问题
微信小程序全局组件的定义
String comparison size in MySQL (date string comparison problem)
排序学习笔记(二)堆排序
随机推荐
debian 10 nat and routing forwarding
PCL—point cloud data segmentation
DOM manipulation---magnifying glass case
AttributeError: ‘Upsample‘ object has no attribute ‘recompute_scale_factor‘
L1-039 古风排版(C)
Cut out web icons through PS 2021
Usage of JOIN in MySQL
ssm various configuration templates
js作用域与闭包
[Basic Tutorial of Remote Control Development 1] Crazy Shell Open Source Formation Drone-GPIO (Remote Control Indicator Light Control)
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boo
语义分割标签即像素值的巨坑,transforms.ToTensor()的错误使用
4.14到新公司的一天
ModuleNotFoundError No module named 'xxx' possible solutions
Phospholipid-polyethylene glycol-hydrazide, DSPE-PEG-Hydrazide, DSPE-PEG-HZ, MW: 5000
【手把手带你学nRF52832/nRF52840 · (1)开发环境搭建】
3 minutes to take you to understand WeChat applet development
C语言中关于2的n次方求值问题(移位运算)
Phospholipid-Polyethylene Glycol-Aldehyde DSPE-PEG-Aldehyde DSPE-PEG-CHO MW: 5000
Dynamic proxy tool class