promise

作者: G莫_小语 | 来源:发表于2019-04-06 11:33 被阅读0次

    一、是什么

    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

          本文链接:https://www.haomeiwen.com/subject/qyfwlftx.html