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);
})

  

最新文章

  1. 在sql语句中使用 xml for path 格式化字符串的方法总结
  2. elasticsearch5.0集群+kibana5.0+head插件插件的安装
  3. Linux命令之awk数组使用范例
  4. R--基本统计分析方法(包及函数)
  5. JS魔法堂:IE5~9的Drag&Drop API
  6. JPA一对一关联
  7. xmpp push篇一 广播消息
  8. 第二百六十五天 how can I 坚持
  9. 关于css3 中filter的各种特效
  10. CocoaPods ADD private Spec Repo
  11. ListView多选操作模式——上下文操作模式
  12. RTMP、HTTP-FLV、HLS,你了解常见的三大直播协议吗
  13. C# 获取电脑的网络连接状态
  14. oracle 之 包,包体创建和使用案例
  15. Sql Server 查询库表记录数
  16. Go 中包导入声明
  17. 20155231 邵煜楠《网络对抗技术》实验一 PC平台逆向破解
  18. ie和火狐事件addEventListener()及attachEvent()区别分析
  19. 在MFC里面使用ADO访问微软的ACCESS数据库 实现增删改查
  20. iOS开发,利用文件流,算大文件的MD5值(程序不会导致内存崩溃)

热门文章

  1. 移动端自动化测试-Windows-Android-Appium环境搭建
  2. SuperArray
  3. sudo 找不到命令 go
  4. 《超哥带你学Linux》
  5. PHP7 学习笔记(十)会话控制
  6. 集大软件工程15级个人作业Week2
  7. js设置div透明度
  8. node之常用模块
  9. vue pc端网站项目开发坑点与难度记录
  10. mysql 5.7 ~ 新特性