首先再确定一下同步和异步的概念:

同步:同步不是指一起做!而是A完成后才能完成B!按部就班,顺序操作~

异步:异步是可以同时执行~

了解Deferred的3个步骤

var dtd = $.Deferred();  //创建
dtd.resolve();          //成功
dtd.then()              //执行回调

实际例子:

boy.walkTo(2000, 0.2).then(function() {

boy.setColoer('red');

})

先执行walkTo(),后面紧跟.then(),则boy.walkTo()必须返回$.Deferred()对应的变量后才可以执行,这里我理解为同步;

但是如果有多个then,可以实现异步:

boy.walkTo(2000, 0.2)
                .then(function() {
                    //第一次走路完成
                    boy.setColoer('red')
                })
                .then(function() {
                    //第二次走
                    boy.walkTo(2000,0.4)
                })
                .then(function() {
                    //第二次走完
                    boy.setColoer('yellow')
                })
                .then(function() {
                    //第三次走
                    boy.walkTo(2000,0.6)
                })
                .then(function() {
                    //第三次走完
                    boy.setColoer('blue')
                });

这段代码当第一次走路walkTo完成后,就可以直接同时执行下面的所有then,实现异步。

因为walkTo里面用了transition有动态动画,因此会从头走到尾

但是设置背景color这些代码一起执行,最后效果只会看到blue

如果我们再walkTo后面加上return,那么下一个then就需要return完成后才能完成,实现同步。

$("button:first").click(function() {
    
            // 开始第一次走路
            boy.walkTo(2000, 0.2)
                .then(function() {
                    //第一次走路完成
                    boy.setColoer('red')
                })
                .then(function() {
                    //第二次走
                    return boy.walkTo(2000,0.4)
                })
                .then(function() {
                    //第二次走完
                    boy.setColoer('yellow')
                })
                .then(function() {
                    //第三次走
                    return boy.walkTo(2000,0.6)
                })
                .then(function() {
                    //第三次走完
                    boy.setColoer('blue')
                });
                  
        });

就可以实现走到20%的时候换了背景,走到40%又换一次,走到60%又换一次。

Deferred异步操作相关推荐

  1. C++多线程编程(3) 异步操作类 std::future std::promise std::async

    C++中提供了异步操作相关的类: 1. std::future: 异步结果的传输通道,可以很方便的获取线程函数的返回值. 在C++中,如果希望获取线程函数的返回值,就不能直接通过thread.join ...

  2. 高通宣布苹果_苹果当时宣布的一切都过得很顺利

    高通宣布苹果 No iPhone 12, but Apple's virtual event featured the Apple Watch Series 6 and SE, two new iPa ...

  3. 苹果ipad如何横向_苹果iPad的阵容是一个完整的混乱

    苹果ipad如何横向 In the last two months Apple has released three new iPads, first was the iPad Pro, which ...

  4. c++11 总结-2

    文章目录 4. c++11 解决内存泄露问题 4.1 shared_ptr 4.2 weak_ptr 4.3 unique_ptr enable_shared_from_this 4.4 通过智能指针 ...

  5. jQuery使用Deferred对象执行异步操作

    在JQuery 1.5之前,Ajax仅支持一个回调函数,但在JQuery的1.5版本中,引入了 Deferred对象,它和ES6的Promise对象长的有点像,jQuery的Deferred对象也有r ...

  6. C++多线程:异步操作std::async和std::promise

    文章目录 std::async 简介 使用案例 std::promise 简介 成员函数 总结 之前的文章中提到了C++多线程中的异步操作机制 C++ 多线程:future 异步访问类(线程之间安全便 ...

  7. ajax dojo deferred,dojo(四):ajax请求

    储备知识 1.在介绍新版本的ajax请求之前,需要先了解一些dojo/Deferreds. 初次听到"Deferred"这个概念,可能会觉得这是一个神秘的东西.实际上它在执行异步操 ...

  8. JQuery Deferred 对象

    http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html <jQu ...

  9. 移动web app开发必备 - 异步队列 Deferred

    背景 移动web app开发,异步代码是时常的事,比如有常见的异步操作: Ajax(XMLHttpRequest) Image Tag,Script Tag,iframe(原理类似) setTimeo ...

最新文章

  1. google浏览器插件安装时出错,Package is invalid: CRX HEADER INVALID
  2. 在jquery mobile制作app的几个页利用ajax将后台数据json数组动态加载到列表里面
  3. js 格式化带时区的日期
  4. oracle access manager token,AuthenticationManager验证原理
  5. HTML label标签学习笔记
  6. Jenkins 中定时任务构建
  7. java 数据库 事务 只读_java – odd SQLException – 无法检索转换只读状态服务器
  8. java编程线程怎么处理_java编程多线程并发处理的教程
  9. 英伟达推出新款“煤气灶”Titan RTX,售价近2万,并开源PhysX SDK
  10. Fixcel电子表格——报表模块(二)
  11. 计算机桌面备份在哪里,电脑备份文件在哪里
  12. 【通信】Matlab实现多同步压缩变换
  13. USBWebserver(网站架设工具)
  14. redis 失效时间单位是秒还是毫秒_经常用Redis,这些坑你知道吗?
  15. 聊天软件黑盒测试,duckchat
  16. 微信小程序开发(三)——IE盒子,Flex弹性布局,色子六面
  17. 数量金融学(8):Markowitz均值-方差模型(2)
  18. 最详细的软考网工题解析来啦!
  19. IBM Bluemix 中文公众版初体验
  20. 1005错误解决办法

热门文章

  1. Linksys WRT54G 路由器溢出漏洞分析—— 运行环境修复
  2. SpringCloud神兽(二)之Ribbon
  3. estimate 和 estimation
  4. 游戏任务剧情布局系统分析
  5. 大盘为何回血以及盐湖股份和科达制造
  6. 文章收录技巧(怎么提升网站伪原创文章的收录)
  7. 安装 deepin系统 实现windows和deepin双系统
  8. ASP数组Ubound与Lbound
  9. css3弹性盒子居中总结1
  10. 如视VR显示连不上服务器,HTC Vive播放本地视频图文教程(附常见问题解决办法)...