Promise 入门笔记

Promise 对象用于异步计算

一个Promise表示一个现在、将来或永不可能可用的值。

按照用途来解释:主要用于异步计算

        可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果。

        可以在对象之间传递和操作Promise,帮助我们处理队列。


为什么需要Promise  

                    JavaScript为检查表单而生。

                    创造它的首要目标是操作DOM。

                    所以,javaScript的操作大多是异步的。

                    同步任务:顺序交付的工作1234,必须按照1234的顺序完成。

                    异步,则是将耗时很长的A交付的工作交给系统之后,就去继续做B交付的工作。等到系统完成前面的工作之后,再通过回调或者事件,继续做A剩下的工作。

                    从观察者的角度看起来,AB工作的完成顺序,和交付他们的时间顺序无关,所以叫“异步”。


浏览器中的js

        异步操作以事件为主

        回调主要出现在Ajax和File API

        这个时候问题尚不算严重

Node.js之后,对异步的依赖进一步加剧了

        无阻塞高并发,是Node.js的招牌

        异步操作是其保障。

        大量操作依赖回调函数。


 

异步回调的问题

        ”回调地狱“,根本不清楚自身的函数在哪个范围

         回调有四个问题:

            嵌套层级很深,难以维护。

            无法正常使用return和throw

            无法正常检索堆栈信息

            多个回调之间难以建立联系


Promise 详解

        Promise是一个代理对象,它和原先要进行的操作并无关系,只是把以前的操作,放到了执行器中   

        它通过引入一个回调, 避免更多的回调

        Promise状态发生改变,就会触发.then()里的响应函数处理后续步骤。

        Promise状态一经改变,不会再改变

  Promise实例一经创建,执行器立即执行。

Promise 有3个状态:

    pending 待定 初始化状态

    fulfilled 实现 操作成功

    rejected 被否决 操作失败


.then()

  .then()接受两个函数作为参数,分别代表fulfilled和rejected

  .then()返回一个新的Promise实例,所以它可以链式调用

  当前面的Promise状态改变时,.then()根据其最终状态,选择特定的状态响应函数执行

  状态响应函数可以返回新的Promise,或其他值

  如果返回新的Promise,那么下一级.then()会在新Promise状态改变后执行

  如果返回其他任何值,则会立刻执行下一级.then()

 

posted @ 2021-06-17 17:45  一懒众衫小丶  阅读(40)  评论(0编辑  收藏  举报