ES6中 Promise的?使用场景?


promise

Promise,是异步编程的一种解决方案,比传统的解决方案(回调函数)更加合理和更加强大。
我们如果处理多层异步操作,容易形成回调地狱问题。

promise解决异步操作的优点

优点

链式操作减低了编码难度
代码可读性明显增强

特点

对象的状态不受外界影响,只有异步操作的结果,可以决定当前是哪一种状态
一旦状态改变(从pending变为fulfilled和从pending变为rejected),就不会再变,
任何时候都可以得到这个结果。

promise对象仅有三种状态

pending(进行中)
fulfilled(已成功)
rejected(已失败)

用法

Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。
resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”
reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”

实例方法

  1. then()

    then是实例状态发生改变时的回调函数,第一个参数是resolved状态的回调函数,
    第二个参数是rejected状态的回调函数。
    then方法返回的是一个新的Promise实例
    
  2. catch()

    catch()方法是.then(null, rejection)或.then(undefined, rejection)的别名,
    用于指定发生错误时的回调函数。
    
  3. finally()

    finally()方法用于指定不管 Promise 对象最后状态如何,都会执行的操作。
    

构造函数方法

  1. all()

    Promise.all()方法用于将多个 Promise实例,包装成一个新的 Promise实例
    
  2. race()

  3. allSettled()

    Promise.race()方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例
    
  4. resolve()

    参数是一个 Promise 实例,promise.resolve将不做任何修改、原封不动地返回这个实例
    参数是一个thenable对象,promise.resolve会将这个对象转为 Promise对象,
    然后就立即执行thenable对象的then()方法
    参数不是具有then()方法的对象,或根本就不是对象,
    Promise.resolve()会返回一个新的 Promise对象,状态为resolved
    没有参数时,直接返回一个resolved状态的 Promise 对象
    
  5. reject()

    	Promise.reject(reason)方法也会返回一个新的 Promise 实例,该实例的状态为rejected
    
  6. try()

使用场景

将图片的加载写成一个Promise,一旦加载完成,Promise的状态就发生变化

通过all()实现多个请求合并在一起,汇总所有请求结果,只需设置一个loading即可

通过race可以设置图片请求超时

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值