认识、掌握、并使用JavaScript Promise

Promise 是什么?

Promise说的简单通俗一点就是一种写代码的方式,并且是用来写JavaScript编程中的异步代码的

基本用法

let p = new Promise((resolve,reject)=>{
    // do something
    //满足某些条件执行resolve  or  reject
    if(条件){
        resolve()
    }else{
        reject()
    }
})

p.then(()=>{
    // 如果p 的状态被resolve了,就进入这里
},()=>{
    // reject
}

第一段是调用了Promise构造函数

第二段是调用了Promise实例的 .then 方法

  1. 构造实例
    1. 构造函数接受一个函数作为参数
    2. 调用构造函数得到实例p的同时,作为参数的函数会立即执行
    3. 参数函数接受两个回调函数参数resolve和reject
    4. 在参数函数执行的过程中,在内部调用resolve,会将p的状态编程fulfilled,或者调用reject,将p的状态变成rejected
  2. 调用 .then
    1. 调用 .then可以为实例p注册两种状态回调函数
    2. 当实例p的状态为fulfilled,会触发第一个函数执行
    3. rejected,第二个函数

总结

上面这样构造promise实例,然后调用 .then.then.then的编写方式,就是promise

基本模式

  • 异步过程转化成promise
  • 三种状态
  • .then 注册状态的回调
  • 已完成的状态能触发回调

如何使用

promise实例是那种状态:

  1. pending(待定)
  2. fulfilled(已执行)
  3. rejected(已拒绝)

fulfilled和reject  可以说成 : 已成功 和 已失败,这两种状态也称为已完成状态

resolve和reject

调用resolve和reject能分别将promise实例的状态变成fulfilled和rejected,

只有状态变成已完成(fulfilled 和  rejected 之一)才能触发状态的回调

Promise API

promise 的内容分为构造函数、实例方法和静态方法

  • 一个构造函数:new Promise
  • 两个实例方法:.then 和 .catch
  • 四个静态方法:Promise.all、Promise.race(不常用)、Promise.resolve、Promise.reject
  • new Promise  能将一个异步过程转换成promise对象。先有了promise对象,然后才有promise编程方式。
  • .then用于为promise对象的状态注册回调函数。它会返回一个promise对象,所以可以进行链式调用,也就是 .then后面可以继续 .then , 在注册的状态回调函数中,可以通过return语句改变 .then 返回的promise对象的状态,以及向后面.then注册的状态回调传递数据;也可以不适用return语句,那样默认就是将安抚你会的promise对象resolve
  •  .catch 用于注册reject状态的回调函数,同时该回调也是程序出错的回调,既如果前面的程序运行过程中出错,也会进入执行该回调函数。同 .then 一样,也会返回新的promise对象。
  • 调用Promise.resolve 会返回一个状态为fulfilled 状态的promise对象,参数会作为数据传递给后面的状态回调函数
  • Promise.reject与Promise.resolve同理,区别在于返回的promise对象状态为rejectd

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值