您的位置:首页 > Web前端

关于$.Deferred()对象的应用

2015-08-16 18:24 288 查看

这里讨论一下$.Deferred()对象的应用中.then(function(){})函数的一个一个问题。

.then(function(){

     return fn();

})

为什么要有return?

var boy = BoyWalk();
    // 开始
    $("button:first").click(function(){
    boy.walkTo(2000, 0.2).then(function(){
    // 第一次走路完成
    boy.setColor("red");
    }).then(function(){
    // 第二次开始走
    return boy.walkTo(2000, 0.4);      

//没有return就会调用上一个Deferred对象,状态为已完成,所以以下函数执行同步,then函数没有异步作用,第二次走路的同时颜色变为黄色。有return则在boy.walkTo(2000, 0.4)函数内部会重新创建Deferred对象,直到动画完成,新Deferred对象的状态才会变为已完成。


    }).then(function(){
    // 第二次走完
    boy.setColor("yellow");
    }).then(function(){
    // 第三次开始走
    boy.walkTo(2000, 0.6);
    }).then(function(){
    // 第三次走完
    boy.setColor("blue");
    });
    });


我们不用管这代码的作用,只看注释就可以了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: