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异步的更多相关文章

  1. 异步队列 Deferred

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

  2. jquery管理ajax异步-deferred对象

    今天跟大家分享一个jquery中的对象-deferred.其实早在jquery1.5.0版本中就已经引入这个对象了.不过可能在实际开发过程中用到的并不多,所以没有太在意. 这里先不说deferred的 ...

  3. C#“同步调用”、“异步调用”、“异步回调”

    本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: ); //模拟该方法运 ...

  4. C#(同步调用、异步调用、异步回调)

    Review: 原作者虽然使用了汉字的类名,看起来十分蹩脚,但是,还是把同步调用.异步调用.异步回调的使用讲解的很详细的.原理讲解的很清晰. ------ 本文将主要通过“同步调用”.“异步调用”.“ ...

  5. C# 同步调用、异步调用、异步回调

    本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: public dele ...

  6. 简述异步编程&Promise&异步函数

    前言:文章由本人在学习之余总结巩固思路,不足之前还请指出. 一.异步编程 首先我们先简单来回顾一下同步API和异步API的概念 1.同步API:只有当前的API执行完成之前,才会执行下一个API 例: ...

  7. [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序

    [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序 本节导读: 本节主要说明使用异步进行程序设计的优缺点及如何通过异步编程. 使用 ...

  8. Javascript异步编程之一异步原理

    本系列的例子主要针对node.js环境,但浏览器端的原理应该也是类似的. 本人也是Javascript新手,把自己这段时间学习积累的要点总结下来,希望可以对同样在学习Javascript/node.j ...

  9. SpringBoot中异步请求和异步调用(看这一篇就够了)

    原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10661591.html,否则将追究法律责任!!! 一.SpringBoot中异步请求的使用 ...

随机推荐

  1. 第六章_PHP数组

    1.PHP支持两种数组:索引数组(indexed array)和关联数组(associative array),前者使用数字作为键,后者使用字符串作为键. 2.遍历索引数组 2.1 for循环语句 2 ...

  2. Permission Lists Assigned to a User

    SQL that I find useful in many occasions. It will return a list of permissions that are assigned to ...

  3. set 赋值(转载)

    名著<C#设计模式>第9章“观察者模式”涉及了标准的事件处理流程,作者在探讨属性值变更时给出一个如下示例代码(P73-74): pulbic abstract class TpeakFun ...

  4. Mongod(5):启动命令mongod参数说明

    Mongodb启动命令mongod参数说明(http://blog.csdn.net/fdipzone/article/details/7442162) mongod的主要参数有: 基本配置 ---- ...

  5. 为hbase新增节点

    为hbase增加新的节点,首先要为hadoop增加新新街点.因为我的做法是将datanode和regionserver放到一台物理机上.因此大体流程是: 1.克隆已经存在的regionserver虚拟 ...

  6. redis的数据类型

    redis有string,hash,list,sets.zsets几种数据类型 1.string数据类型 可包含任何数据,是二进制安全的,比如图片或者序列化的对象set key valueset na ...

  7. mac虚拟机parallels 无法启动 "Windows 7" 虚拟机

    关机前在虚拟机上安装了个游戏有点大,第二天开机就使用不了虚拟机了: 提示:mac虚拟机parallels  无法启动 "Windows 7" 虚拟机.  释放至少 241 MB 的 ...

  8. jquery实现radio按纽全不选和checkbox全选的实例

    用jquery实现以下两个这个功能: 1.对所有单选按纽中radio全不选 单选按纽:<input type="radio" name="f1">A ...

  9. 一个封装好的CSV文件操作C#类代码

    using System.Data; using System.IO; namespace DotNet.Utilities { /// <summary> /// CSV文件转换类 // ...

  10. 信驰达蓝牙4.0模块全面升级 v2.20 U最新发布

    作为国际蓝牙联盟成员之一,德州仪器(TI)于2012年强势推出CC254X系列单芯片(SOC)低功耗蓝牙收发器,经典51内核,最强优势在于丰富的外围(21个IO,UART,SPI,USB2.0,PWM ...