Deferred异步操作
首先再确定一下同步和异步的概念:
同步:同步不是指一起做!而是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异步操作相关推荐
- C++多线程编程(3) 异步操作类 std::future std::promise std::async
C++中提供了异步操作相关的类: 1. std::future: 异步结果的传输通道,可以很方便的获取线程函数的返回值. 在C++中,如果希望获取线程函数的返回值,就不能直接通过thread.join ...
- 高通宣布苹果_苹果当时宣布的一切都过得很顺利
高通宣布苹果 No iPhone 12, but Apple's virtual event featured the Apple Watch Series 6 and SE, two new iPa ...
- 苹果ipad如何横向_苹果iPad的阵容是一个完整的混乱
苹果ipad如何横向 In the last two months Apple has released three new iPads, first was the iPad Pro, which ...
- c++11 总结-2
文章目录 4. c++11 解决内存泄露问题 4.1 shared_ptr 4.2 weak_ptr 4.3 unique_ptr enable_shared_from_this 4.4 通过智能指针 ...
- jQuery使用Deferred对象执行异步操作
在JQuery 1.5之前,Ajax仅支持一个回调函数,但在JQuery的1.5版本中,引入了 Deferred对象,它和ES6的Promise对象长的有点像,jQuery的Deferred对象也有r ...
- C++多线程:异步操作std::async和std::promise
文章目录 std::async 简介 使用案例 std::promise 简介 成员函数 总结 之前的文章中提到了C++多线程中的异步操作机制 C++ 多线程:future 异步访问类(线程之间安全便 ...
- ajax dojo deferred,dojo(四):ajax请求
储备知识 1.在介绍新版本的ajax请求之前,需要先了解一些dojo/Deferreds. 初次听到"Deferred"这个概念,可能会觉得这是一个神秘的东西.实际上它在执行异步操 ...
- JQuery Deferred 对象
http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html <jQu ...
- 移动web app开发必备 - 异步队列 Deferred
背景 移动web app开发,异步代码是时常的事,比如有常见的异步操作: Ajax(XMLHttpRequest) Image Tag,Script Tag,iframe(原理类似) setTimeo ...
最新文章
- google浏览器插件安装时出错,Package is invalid: CRX HEADER INVALID
- 在jquery mobile制作app的几个页利用ajax将后台数据json数组动态加载到列表里面
- js 格式化带时区的日期
- oracle access manager token,AuthenticationManager验证原理
- HTML label标签学习笔记
- Jenkins 中定时任务构建
- java 数据库 事务 只读_java – odd SQLException – 无法检索转换只读状态服务器
- java编程线程怎么处理_java编程多线程并发处理的教程
- 英伟达推出新款“煤气灶”Titan RTX,售价近2万,并开源PhysX SDK
- Fixcel电子表格——报表模块(二)
- 计算机桌面备份在哪里,电脑备份文件在哪里
- 【通信】Matlab实现多同步压缩变换
- USBWebserver(网站架设工具)
- redis 失效时间单位是秒还是毫秒_经常用Redis,这些坑你知道吗?
- 聊天软件黑盒测试,duckchat
- 微信小程序开发(三)——IE盒子,Flex弹性布局,色子六面
- 数量金融学(8):Markowitz均值-方差模型(2)
- 最详细的软考网工题解析来啦!
- IBM Bluemix 中文公众版初体验
- 1005错误解决办法