promise

一、是什么

  1. 主要用于异步计算
  2. 可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
  3. 可以在对象之间传递和操作Promise,帮助我们处理队列

二、产生的原因

  1. javascript为检查表单而生
  2. 创造它的首要目标是操作DOM
  3. 是UI语言,造成页面冻结是大忌,所以,JavaScript的操作大多是异步的,

三、Promise

new Promise(
    // 执行器
    function (resolve, reject) {
        resolve()   // 数据处理完成

        reject()   // 数据处理出错
    }
).then(function A(){
    // 成功,下一步
}, function B(){
    // 失败,做相应处理
})
  • Promise是一个代理对象,它和原先要进行的操作并无关系,通过引入一个回调,避免更多的回调
  • Promise有三个状态,
    pending [待定] 初始状态 实例化
    fulfilled [实现] 操作成功 调用 resolve
    rejected [被否决] 操作失败 调用 reject
  • Promise状态发生改变,就会触发.then()里的响应函数处理后续步骤
  • Promise状态一经改变,不会再变

.then()

  • .then()接受两个函数作为参数,分别代表fulfilled和rejected
  • .then()返回一个新的Promise实例,所以它可以链式调用
  • 当前面的Promise状态改变时,.then()根据其最终状态,选择特定的状态响应函数执行
  • 状态响应函数可以返回新的Promise或其他值
  • 如果返回新的Promise,那么下一级.then()会在新的Promise状态改变后执行
  • 如果返回的时其他的任何值,则会立刻执行下一级.then()

.then()里有.then()的情况

  • 因为.then()返回的还是Promise实例
  • 会等里面的.then()执行完,再执行外面的
  • 对于我们来说,此时最好将其展开,会更好读

Promise.all()

  • 它接受一个数组作为参数
  • 数组里可以是Promise对象,也可以是别的值,只有Promise会等待状态改变
  • 当所有子Promise都完成,该Promise完成,返回值是全部值的数组
  • 有任何一个失败,改Promise失败,返回值是第一个失败的子Promise的结果

你可能感兴趣的:(promise)