Promise对象

作者: avery1 | 来源:发表于2017-11-13 16:25 被阅读28次

    感觉学习angular2里的promise和obserable还有很长的路走。

    先在此开始记录下,慢慢学来!

    参考文章会在此列出:

    Promise

    Javascript 中的神器——Promise

    大白话讲解Promise(一)    ☆☆☆☆☆

    你不懂JS: 异步与性能 第三章: Promise(下)

    你不懂JS: 异步与性能

    RXJS详解

    如何理解 RxJS?   ☆☆☆☆☆

    初探Promise

    Observable详解    ☆☆☆☆☆

    RxJs 核心概念之Observable

    构建流式应用—RxJS详解

    了解Promise

    在谈论Promise之前我们要了解一下一些额外的知识;我们知道JavaScript语言的执行环境是“单线程”,所谓单线程,就是一次只能够执行一个任务,如果有多个任务的话就要排队,前面一个任务完成后才可以继续下一个任务。

    这种“单线程”的好处就是实现起来比较简单,容易操作;坏处就是容易造成阻塞,因为队列中如果有一个任务耗时比较长,那么后面的任务都无法快速执行,或导致页面卡在某个状态上,给用户的体验很差。

    当然JavaScript提供了“异步模式”去解决上述的问题,关于“异步模式”JavaScript提供了一些实现的方法。

    ------    回调函数(callbacks)

    ------    事件监听

    ------    Promise对象

    关于回调函数,大家应该都不陌生,比如下面的代码:

    AV.User.logIn("myname","mypass",{  

               success:function(user){

                    // Do stuff after successful login.

                   },

               error:function(user, error){

                   // The login failed. Check error to see why.

                }    

    });

    用户通过用户名和密码来进行登录,如果登陆成功的话,会在success这个模块进行处理,如果登陆失败的话,就会在error这个模块进行处理。

    当我们需要处理的任务不是很多的情况下,使用回调函数还是可以应付的,也没有太大的问题,但是当我们需要处理的任务比较多的时候,使用回调函数的弊端越来越明显了;首先,回调使得调用不一致,得不到保证;当依赖于其它回调时,它们篡改代码的流程,是调试变得异常艰难,每一步调用之后都需要显式的处理错误;最后,过多的回调使得代码的可读性和可维护性都变得很差,所以越来越多的程序员选择使用Promise去处理异步模式。

    Promise是什么

    Promise是一种异步方式处理值(或者非值)的方法,promise是对象,代表了一个函数最终可能的返回值或者抛出的异常。

    在与远程对象打交道时,Promise会非常有用,可以把它们看作远程对象的一个代理。

    The Promise object is used for asynchronous computations. A Promise represents a single asynchronous operation that hasn't completed yet, but is expected in the future.

    译文:Promise对象用于异步操作,它表示一个尚未完成且预计在未来完成的异步操作。

    使用Promise的理由

    使用Promise可以让我们逃脱回调地狱,使我们的代码看起来像是同步的那样。

    可以在程序中的任何位置捕捉错误,并且绕过依赖于程序异常的的后续代码,获得功能组合和错误冒泡的能力,最重要的是保持了异步运行的能力。

    使我们的代码的可读性与可维护性都变得很好。

    相关文章

      网友评论

        本文标题:Promise对象

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