嵌套回调异步与$.Deferred异步
HTML:
<input type="button" id="btn1" value="嵌套回调异步">
<input type="button" id="btn2" value="$.Deferred异步">
<p>显示结果:<span id="result"></span></p>
JS:
var btn_1 = document.querySelector('#btn1');
var btn_2 = document.querySelector('#btn2');
btn_1.onclick = function() {
//模拟异步A
function A(callback) {
setTimeout(function() {
callback(1)
},
500)
};
//模拟异步B
function B(callback, value) {
setTimeout(function() {
callback(value + 2)
},
500)
}
//A执行完毕后,在执行B
A(function(data1) {
B(function(data2) {
document.querySelector('#result').innerHTML = "嵌套异步:" + data2;
},
data1)
})
}
btn_2.onclick = function() {
//模拟异步C
function C() {
var dtd = $.Deferred(); //创建
setTimeout(function() {
dtd.resolve(3) //成功
},
500) return dtd
};
//模拟异步D
function D(value) {
var dtd = $.Deferred();
setTimeout(function() {
dtd.resolve(value + 4)
},
500) return dtd
}
//模拟异步E
function E(value) {
var dtd = $.Deferred();
setTimeout(function() {
dtd.resolve(value + 5)
},
500) return dtd
}
C().then(function(data) { //执行回调
return D(data)
}).then(function(data) {
return E(data)
}).then(function(data) {
document.querySelector('#result').innerHTML = "Deferred异步处理:" + data;
})
}
DEMO地址:http://codepen.io/jonechen/pen/EKaXxb
嵌套回调异步与$.Deferred异步的更多相关文章
- 异步队列 Deferred
异步队列 Deferred 背景: 移动web app开发,异步代码是时常的事,比如有常见的异步操作: Ajax(XMLHttpRequest) Image Tag,Script Tag,iframe ...
- jquery管理ajax异步-deferred对象
今天跟大家分享一个jquery中的对象-deferred.其实早在jquery1.5.0版本中就已经引入这个对象了.不过可能在实际开发过程中用到的并不多,所以没有太在意. 这里先不说deferred的 ...
- C#“同步调用”、“异步调用”、“异步回调”
本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: ); //模拟该方法运 ...
- C#(同步调用、异步调用、异步回调)
Review: 原作者虽然使用了汉字的类名,看起来十分蹩脚,但是,还是把同步调用.异步调用.异步回调的使用讲解的很详细的.原理讲解的很清晰. ------ 本文将主要通过“同步调用”.“异步调用”.“ ...
- C# 同步调用、异步调用、异步回调
本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: public dele ...
- 简述异步编程&Promise&异步函数
前言:文章由本人在学习之余总结巩固思路,不足之前还请指出. 一.异步编程 首先我们先简单来回顾一下同步API和异步API的概念 1.同步API:只有当前的API执行完成之前,才会执行下一个API 例: ...
- [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序
[.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序 本节导读: 本节主要说明使用异步进行程序设计的优缺点及如何通过异步编程. 使用 ...
- Javascript异步编程之一异步原理
本系列的例子主要针对node.js环境,但浏览器端的原理应该也是类似的. 本人也是Javascript新手,把自己这段时间学习积累的要点总结下来,希望可以对同样在学习Javascript/node.j ...
- SpringBoot中异步请求和异步调用(看这一篇就够了)
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10661591.html,否则将追究法律责任!!! 一.SpringBoot中异步请求的使用 ...
随机推荐
- 通过string型类名实例化一个类
DataTable dt = new DBHelper().getIndexInfo(code_id); DataRow row = dt.Rows[0]; string dllName = row[ ...
- .NET 中的DateTime
DateTime简介 DateTime是.NET中的时间类型,可以通过DateTime完成诸如获取当前的系统时间等操作.DateTime在.NET中是一个结构体,而并不是一个类. 如上图所示,这个图标 ...
- HTML 5 Canvas
HTML 5 Canvas HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像. <canvas id="myCanvas" width=&q ...
- JMeter2.13进行压力测试
1.安装 2. 样本数目 总共发送到服务器的请求数. 最新样本 代表时间的数字,是服务器响应最后一个请求的时间 吞吐量 是服务器每分钟处理的请求数. 平均值 是总运行时间除以发送到服务器的请求数. 中 ...
- SDUST 软件工程2016-作业4-A 百钱买鸡问题
解决百钱买鸡问题原本并不困难,关键的是这道题对其进行了升级,测试数据太大,传统的解法,像三重循环,二重循环都会导致超时. 这道题正确的解法应该是结合数学方程进行化简,将其转化为1层循环: x+y+z= ...
- SBM is Not Sale And Run Company
data = """ Well,We will bet you dollars to donuts,there are so many crusher provider ...
- 通过Sql语句控制SQLite数据库增删改查
person类属性有Intenger id,String name,Intenger age,相应的构造方法和set get方法. package com.xh.tx.dao; import jav ...
- MYSQL数据库表中字段追加字符串内容
$sql="update parts set p_notes=concat(p_notes,'{$p_notes}') where p_id={$p_id}"; parts为表名 ...
- 西门子SIMATIC IT平台
西门子公司的SIMATIC IT平台基于ANSI/ISA S95标准开发,包含的功能组件覆盖了ISA S95规定的生产业务操作模型,同时也满足MESA所确定的MES系统11项功能要求. SIMATIC ...
- 用web查看hadoop运行状态
转载--http://www.weixuehao.com/archives/621 我们安装完hadoop,下面我们从视觉上看看hadoop怎么玩的. 我们可以在win7系统上,通过web界面,在浏览 ...