浅析promise特点、三种状态、api应用

8 篇文章 0 订阅

promise

在面试的时候如果遇到面试官提到promise就可以用到以下内容,可以尝试着把下边这些全部回答出来🦢🦢

1 promise 程序执行的特点

  • 1: new Promise中的回调函数是同步执行的
  • 2: 原型方法的回调函数,都是异步执行的, 属于异步消息队列中的微任务.

2 promise有三种状态

  • pending (进行中)
  • resolve/ fulfilled 已接收
  • reject 已拒绝

promise api 分类

  • 原型api
  • 静态pai
  • 所有的api执行后返回值都是 新的promise实例对象, 只要是 promise实例对象就可以使用原型方法
  • 静态方法:只能同过Promise构造函数使用

原型方法

原型方法,通常是由,promise实例对象触发.

分类

  • then 监听primise实例状态的变更, 主要监听变为已接收(resolve)
  • catch 监听promise实例 已拒绝的状态(reject)
  • finally 监听链式调用中最后的一个状态

原型方法支持链式调用,原型方法的callback 是异步执行的,属于微任务

.thenCallback

  • 1: 触发条件 当promise状态变为 fulfilled
  • 2: 形参来源 resolve函数实参 或者 上一个then return

静态方法

  • Promise.all() 同时监听多个promise实例的状态变更,所有promise都变为 fulfilled(已接收) 执行 all-then-callback,有一个拒绝,执行catch-callback
    • 我经常用于处理并发业务.例如,同时发送多个请求,等所有请求成功后,在处理.
    • 多张图片上传

Promise.all 捕获 reject 不是绝对的.如果单个promise中;捕获了catch, Promise.all 不会捕获catch

Promise.all() 
参数:数组;数组元素是promise 实例
返回:新的promise 

.thenCallback
1:所有promise都变为 resolve
2:形参 数组, 数组元素 resove 实参. 
  • Promise.race() 监听多个promise实例状态,第一个发生状态变更的,如果是 fullid(已接收),执行 race-then-callback 如果是reject 执行race-catch-callback
  • Promise.any() 监听多个promise实例的状态, 只要有一个 变为fulfilled (已接收) 执行 any-then-callback 全部reject执行 any-catch-callback
  • Promise.resolve() 相当于在 new Promise中执行 resolve
  • Promise.reject() 相当于在 new Promise 执行 reject

promise 应用

只要是异步程序都可以使用promise. 例如 发送网络请求.
解决异步bug ,—> 异步问题同步化.

特点:

  • 优点将传统的回调函数实现异步.变为 .then的链式调用
  • 确定 then 可以一直执行, 并且也没有提高太大的代码可读性
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值