前端基础 - Defer对象

参考:http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript">
    // case 1, alert success 1, success 2
    var dtd = $.Deferred(); // 新建一个Deferred对象
    dtd.resolve('success');
    dtd.then(function(msg){
         alert(msg + ' 1');
         return msg;
    }).fail(function(msg){
        alert(msg + ' 1')
        return msg
    }).then(function(msg){
          alert(msg + ' 2')
          return msg
    }).fail(function(msg){
        alert(msg + ' 2')
        return msg
    })

</script>

上面一段代码的执行结果是 success 1, success 2.

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>

<script type="text/javascript">
    // case2, alert success1, fail 1, fail 2
    var dtd = $.Deferred(); // 新建一个Deferred对象
    dtd.resolve('success');
    dtd.then(function(msg){
         alert( msg + ' 1');
         return new $.Deferred().reject('fail');
    }).fail(function(msg){
        alert( msg + ' 1');
        return new $.Deferred().resolve('success');
    }).then(function(msg){
          alert( msg + ' 2');
          return msg;
    }).fail(function(msg){
        alert( msg + ' 2');
        return msg;
    })    
</script>    

这一段代码执行结果是 success1, fail 1, fail 2. 能解释一下否?

 

posted @ 2016-02-25 13:19  Gibbon  阅读(266)  评论(0编辑  收藏