zoukankan      html  css  js  c++  java
  • 【转】AngularJS领域中的Promise

    Promise是一个接口,它用来处理的对象具有这样的特点:在未来的某一时刻(主要是异步调用)

    会从服务端返回或者被填充属性。其核心是,promise是一个带有then()函数的对象。

    为了展示它的优点,来看一个例子其中需要获取用户当前的配置文件:

    1 var currentProfile=null;
    2 var username='something';
    3 fetchServerConfig(function(serverConfig){
    4     fetchUserProfiles(serverConfig.USER_PROFILES,username,
    5         function(profiles){
    6             currentProfile=profiles.currentProfile;
    7         });
    8 });

    上面这种处理方式存在一些问题:

      1.对于代码缩进来说,这种代码就是一个噩梦,尤器在需要链式调用很多次的时候。

      2.处于回调和函数之间的错误报告非常容易丢失,除非你在每一个步骤中都手动处理错误。

      3.如果需要使用currentProfile对象来做一些事情,那么你需要在最内层的回调中封装真正想要

       实现的逻辑,要么直接封装,要么通过一个单独的函数来封装。

    promise机制可以很好地解决这些问题。在深入了解其运行机制之前,来看看如何使用promise实现

    同样的事情:

    1 var currentProfile=fetchServerConfig().then(function(serverConfig){
    2     return fetchUserProfiles(serverConfig.USER_PROFILES,username);
    3 }).then(function(){
    4     return profiles.currentProfile;
    5 },function(err){});

    使用promise机制有如下优点:

      1.可以对函数进行链式调用,所以你不会陷入代码缩进噩梦中。

      2.在调用链的过程中,可以保证上一个函数调用完成后才会调用下一个函数。

      3.每一个then()调用都带有两个参数(两个都是函数)。第一个是成功之后的回调,第二个

       是出错之后的处理器。

      4.如果调用链中出现了错误,错误将会被冒泡传递到其余的错误处理函数中,所以,最终来说

       所有错误都可以在任意一个回调函数中进行处理

  • 相关阅读:
    CI框架基本配置/教你学习CI框架codelgniter
    CI框架 简介
    PHP CI框架目录结构及运行机制
    [老老实实学WCF] 第三篇 在IIS中寄存服务
    [老老实实学WCF] 第二篇 配置WCF
    [老老实实学WCF] 第一篇 Hello WCF
    Js获取当前日期时间及其它操作
    当<script>中的type等于text/html的妙用
    asp.net MVC3 仿照博客园功能 异常处理
    jquery.validate使用攻略
  • 原文地址:https://www.cnblogs.com/Bideam/p/5791718.html
Copyright © 2011-2022 走看看