var d=$.Deferred();
//deferred下面的方法有:
// ["resolve", "resolveWith", "reject", "rejectWith", "notify", "notifyWith",
// "state", "always", "then", "promise", "pipe", "done", "fail", "progress"]
console.info(Object.keys(d));
console.info(d.pipe== d.then);//true
console.info(d.state());//初始化pending状态 //------------resolve对应的是done------------
function fn1(){
var def= $.Deferred();
setTimeout(function(){
def.resolve('成功了!');
},1000);
return def.promise();
}
fn1().done(function(data){
console.info(data);//成功了!
});
//或者可以这样写
fn1().then(function(data){ //then的参数为( fnDone, fnFail, fnProgress)
console.info(data);//成功了!
}); //------------reject对应的是fail------------
function fn2(){
var def= $.Deferred();
setTimeout(function(){
def.reject('失败了!');
},1000);
return def.promise();
}
fn2().fail(function(data){
console.info(data);//失败了!
});
//或者可以这样写
fn2().then(function(data){ //then的参数为( fnDone, fnFail, fnProgress)
//不会走
},function(data){
console.info(data);
}); //------------notify对应的是progress------------
function fn3(){
var def= $.Deferred();
setTimeout(function(){
def.notify('传递给下一步回调的通知!');
},1000);
return def.promise();
}
fn3().progress(function(data){
console.info(data);//传递给下一步回调的通知!
});
//或者可以这样写
fn3().then(function(data){ //then的参数为( fnDone, fnFail, fnProgress)
//不会走
},function(data){
//不会走
},function(data){
console.info(data);//传递给下一步回调的通知!
}); //------------always 不管成功与否都会执行回调------------
//deferred.done( arguments ).fail( arguments );
function fn4(){
var def= $.Deferred();
setTimeout(function(){
Math.random()>0.5?def.resolve('成功!'): def.reject('失败!')
},1000);
return def.promise();
}
fn4().always(function(data){
console.info(data);//成功!or失败!
}); //------------连续的回调依次执行------------
/*第一异步程序*/
function delayFn1(arg1){
var def= $.Deferred();
setTimeout(function(){
var data=arg1+1;
console.info("第一步--->",data);
def.resolve(data);
},1000);
return def.promise();
}
/*第二个异步程序*/
function delayFn2(arg2){
var def= $.Deferred();
setTimeout(function(){
var data=arg2+1;
def.resolve(data);
},1000);
return def.promise();
}
/*第三个异步程序*/
function delayFn3(arg3){
var def= $.Deferred();
setTimeout(function(){
var data=arg3+1;
def.resolve(data);
},1000);
return def.promise();
} delayFn1(1).then(function(data){
console.info("第二步--->",data);
return delayFn2(data)
}).then(function(data){
console.info("第三步--->",data);
return delayFn3(data)
}).then(function(data){
console.info("第四步--->",data);
alert(data);
})

  

jq中Deferred对象的使用的更多相关文章

  1. jQuery中deferred对象的使用(二)

    接上一回的内容,漏了一个always()方法,参数也是回调函数,与done和fail不同的是,无论任何情况都执行always方法中的回调. deferred对象的使用(二) deferred对象不光可 ...

  2. jQuery中deferred对象的使用(一)

    在jquery1.5之后的版本中,加入了一个deferred对象,也就是延迟对象,用来处理未来某一时间点发生的回调函数.同时,还改写了ajax方法,现在的ajax方法返回的是一个deferred对象. ...

  3. jQuery中异步操作对象Deferred

    以下介绍一下jQuery中Deferred对象的使用: 1. 通过$.Deferred生成一个deferredObj对象; 2. deferredObj.done()指定操作成功时的回调函数; 3. ...

  4. javascript 学习笔记之JQuery中的Deferred对象

    Deffered是Jquery中的一个非常重要的对象,从1.5版本之后,Jquery中的ajax操作都基于Deffered进行了重构,这个对象的处理模式就像其他Javascript框中的Promise ...

  5. JQ中的延迟对象deferred中的promise等的使用

    一.什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作.其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们 ...

  6. jQuery中的deferred对象和extend方法

    1⃣️deferred对象 deferred对象是jQuery的回调函数解决方案,它是从jQuery1.5.0版本开始引入的功能 deferred对象的方法 (1) $.Deferred() 生成一个 ...

  7. jQuery中deferred的对象使用

    什么是deferred对象 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作.其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是 ...

  8. jquery中的 deferred之 deferred对象 (一)

    案例: var def=$.Deferred(); console.log(def);//答案见 图1 图1: deferred就是一个有这些方法的对象. 看源码分析: Deferred: funct ...

  9. jq中的isArray方法分析,如何判断对象是否是数组

    <!DOCTYPE html> <html> <head> <title>jq中的isArray方法分析</title> <meta ...

随机推荐

  1. 使用博客系统发生_STORAGE_WRITE_ERROR_错误

    因为本人有自己的vps正好又最近学习了网络的搭建,但是呢不是一番风顺的在假设好PHP.http和MySQL后吧一个博客系统放进去后出现了以下问题 好吧== 出来了这个问题到是让我看了半天,然后查了查说 ...

  2. item2乱码问题

    使用的是 mac 环境,本地使用终端打开中文可以正常显示,但是连接远端服务器上发现就编程乱码了,之前一直是好好的,但是突然有一天开始就乱码了,怀疑是我电脑升级后导致系统环境配置发生变化引起的.直接上解 ...

  3. Nginx使用Location匹配URL进行伪静态

    基础知识 Nginx location 配置语法 1. location [ = | ~ | ~* | ^~ ] uri { ... } 2. location @name { ... } locat ...

  4. 【1】【JUC】Condition和生产者消费者模型

    本篇文章将介绍Condition的实现原理和基本使用方法,基本过程如下: 1.Condition提供了await()方法将当前线程阻塞,并提供signal()方法支持另外一个线程将已经阻塞的线程唤醒. ...

  5. UVa 11134 Fabled Rooks(贪心)

    题目链接  题意  在n*n的棋盘上的n个指定区间上各放1个'车’ , 使他们相互不攻击(不在同行或同列),输出一种可能的方法. 分析 每行每列都必须放车,把行列分开看,若行和列同时有解,则问题有解. ...

  6. 任意两点间的最短路问题(Floyd-Warshall算法)

    #define _CRT_SECURE_NO_WARNINGS /* 7 10 0 1 5 0 2 2 1 2 4 1 3 2 2 3 6 2 4 10 3 5 1 4 5 3 4 6 5 5 6 9 ...

  7. Hadoop mapreduce执行过程涉及api

    资源的申请,分配过程略过,从开始执行开始. mapper阶段: 首先调用默认的PathFilter进行文件过滤,确定哪些输入文件是需要的哪些是不需要的,然后调用inputFormat的getSplit ...

  8. django错误笔记——TypeError: view must be a callable or a list/tuple in the case of include().解决办法

    django增加用户认证模块时,总是提醒模块的url.py中 url(r'^login/$', 'django.contrib.auth.views.login', name='login'),出错: ...

  9. luogu P1437 [HNOI2004]尻♂砖块

    传送门 想明白了其实不难 强行瞎扯 这题的限制比较烦,导致了一行行转移几乎不能做(吧) 那么一列列转移呢? 设\(f_{i,j,k}\)表示前\(i\)列,取\(j\)个,其中第\(i\)列取从上往下 ...

  10. [JLOI2015]装备购买 (高斯消元)

    [JLOI2015]装备购买 \(solution:\) 首先这道题的题面已经非常清晰的告诉我们这就是线性空间高斯消元的一道题(可以用某些装备来表示另一件装备,这已经不能再明显了),只是这道题要求我们 ...