1.11今日学习

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方法清除所有成员,没有返回值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值