• 丁鹿学堂:promise深入解读(一)


    异步回调函数带来的问题

    1.回调地狱问题
    前面我们也多次提过了,就是如果多个异步回调嵌套,就会有回调地狱的问题,不利于阅读和维护。
    2.可靠性丢失问题
    如果我们在开发中引入了第三方库,他是异步的,则在同步和异步执行,会导致控制权不完全由我们掌握,带来可靠性丢失。
    解决方案:promise

    通俗感性上解释promise

    promise翻译过来是承诺。我们现实中对应吃饭的一个叫号机制。
    当你去吃饭的时候,你报了你点的饭,不会马上给你,但是给你一个号码。等做好了就会叫号,你拿着号码去领。
    这个号码其实就是一个promise,他会承诺你在未来某个时候做好了会通知你。
    也就是说,我们通过promise,你异步有结果(不管成功还是失败),不要让我给你传递回调,你给我一个通知就好了。

    promise的执行流程解析

    异步函数写在promise的参数函数中
    如果成功了,就调用resolve,如果失败了就调用reject。
    它的返回值是一个primise对象p。
    我们通过p上面的then方法,传递两个回调,如果成功就执行第一个回调,如果失败就执行第二个回调。
    这样的好处就是我们可以拿到代码的控制权。

    注意:

    promise并没有移除回调,而是改变了回调传入的为止。但是因为有标准的promise机制去保证,我们的代码健壮性更强。

    promise的保证机制

    1.对象的状态不受外界影响
    2.一旦状态改变就不会再变
    3 如果promise返回了成功的信息,那么绑定在成功上面的回调就会得到这个消息
    4 如果发生了错误,promise会收到一个错误通知。

    promise的缺点

    1.无法取消,一旦新建他就会立即执行,无法中途取消
    2.如果不设置回调,promise内部如果抛出错误,外界是无法得知的
    3当promise处于pending状态时,无法得知目前是刚刚开始还是即将完成。

    总结:

    promise解决了回调地狱难维护的问题,也解决了控制转移的问题。如果没有promise,我们就必须要很谨慎去使用涉及到异步的第三方库的代码,必须要想办法解决状态跟踪的问题。
    有了promise之后,他能使得我们重新获取代码的控制权。我们在遵循promise机制的代码中不需要担心可靠性问题。

  • 相关阅读:
    MySQL索引
    KES服务管理和环境变量配置(Kylin)
    不知道word压缩文件怎么弄?简单三步轻松实现
    [附源码]Python计算机毕业设计SSM健康饮食推荐系统(程序+LW)
    vue2技能树(1)
    数据结构和算法(13):优先级队列
    linux和windwos下的磁盘扇区数据查看
    安装pangolin问题解决|找不到makefile
    小迪安全33WEB 攻防-通用漏洞&文件上传&中间件解析漏洞&编辑器安全
    用两个栈实现队列
  • 原文地址:https://blog.csdn.net/qq_38525381/article/details/127566811