JavaScript异步Promise

1.同步vs异步

同步和异步在程序执行是相反的,同步执行指令是分先后顺序的,就像排队打饭一样,按照顺序执行。异步执行不按照先后到达的顺序,准备好了就可以进行,不会造成进程阻塞的问题。JS是单线程的,如果按照同步执行的顺序执行代码,很容易造成阻塞,影响程序执行的性能。由此可见,异步编程在JS中的地位。

2.异步编程常用场景

  • 回调函数
  • 事件监听
  • Promise
  • Generator
  • async / awit

在以上场景下,会容易出现回调地狱的现象(多层回调函数互相嵌套),那如何解决回调地狱呢?

3.promise核心

在这一部分主要介绍promise和promise API

  • 什么是promise

可以将promise理解为容器,内部保存的是未来某个时刻才会执行完的事件。从语法上看,promise是一个对象,从它可以获得异步操作的消息。

  • promise状态机

promise有三个状态:

pedding(待定):初始状态,既没有完成,也没有拒绝

fulfilled(完成):操作成功完成

rejected(拒绝):操作失败

  • promise中常用方法

promise.prototype.then( )

为契约添加处理程序的主要方法,最多接收两个参onResolved,onReject分别进入“兑现”和“拒绝”状态时执行。

promise.prototype.catch()

用于给promise添加拒绝处理程序,该方法仅接收一个参数onReject的处理程序。事实上,这个方法就是一个语法糖,调用它相当于调用Promise.prototype.then(null, onRejected)

promise.prototype.finally()

在promise转化为解决或者拒绝状态时都会执行,这个方法可以避免处理和拒绝状态中的冗余代码部分。

Promise.all()

参数:接收一个可迭代对象

此方法用于汇总多个promise异步请求并行操作,当所有结果成功返回时按照请求顺序返回成功;其中如果有一个请求失败则返回失败。

Promise.race()

参数:接收一个可迭代对象

race()返回一个promise,只要参数的promise之中有一个实例率先改变状态,则race方法的返回状态就跟着改变。

Promise.allSetted()

接收一个promise数组,返回一个新的promise

当promise.allSetted全部处理完成后,可以拿到每个promise的状态,而不管其是否处理成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值