jquery中对于批量deferred的处理方法


Posted in Javascript onJanuary 22, 2014

此代码仿照jquery源码中$.when()的实现

function test(i) {
    var dfd = $.Deferred();
    if(i%2 == 0) {
        console.log("resolve " + i);
        dfd.resolve();
    } else {
        console.log("failure " + i);
        dfd.reject();
    }    return dfd.promise();
}
function call() {
    var dfd = $.Deferred();
    var remain = 10;
    for(var i=0;i< 10;i++){
        test(i).done(function() {
            if(!(--remain)) {
                dfd.resolve();
            }
        }).fail(function() {
            if(!(--remain)) {
                dfd.resolve();
            }
        })
    }
    return dfd.promise();
}

call().done(function() {
    console.log("all finished");
});

输出结果:

resolve 0 test.js:4
failure 1 test.js:7
resolve 2 test.js:4
failure 3 test.js:7
resolve 4 test.js:4
failure 5 test.js:7
resolve 6 test.js:4
failure 7 test.js:7
resolve 8 test.js:4
failure 9 test.js:7
all finished
Javascript 相关文章推荐
CSS JavaScript 实现菜单功能 改进版
Dec 09 Javascript
JavaScript 序列化对象实现代码
Dec 18 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
Jan 26 Javascript
jQuery实现强制cookie过期方法汇总
May 22 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
Feb 15 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
Sep 05 Javascript
学习使用bootstrap的modal和carousel
Dec 09 Javascript
js实现可输入可选择的select下拉框
Dec 21 Javascript
vue 获取视频时长的实例代码
Aug 20 Javascript
Node.js系列之连接DB的方法(3)
Aug 30 Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 Javascript
JS获取表格视图所选行号的ids过程解析
Feb 21 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 #Javascript
jquery each的几种常用的使用方法示例
Jan 21 #Javascript
JavaScript在for循环中绑定事件解决事件参数不同的情况
Jan 20 #Javascript
javascript break指定标签打破多层循环示例
Jan 20 #Javascript
js点击出现悬浮窗效果不使用JQuery插件
Jan 20 #Javascript
javascript中直接引用Microsoft的COM生成Word
Jan 20 #Javascript
通过复制Table生成word和excel的javascript代码
Jan 20 #Javascript
You might like
jQuery插件scroll实现无缝滚动效果
2015/04/27 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
js父页面中使用子页面的方法
2016/01/09 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
深入浅析knockout源码分析之订阅
2016/07/12 Javascript
JS对象序列化成json数据和json数据转化为JS对象的代码
2017/08/23 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
2018/09/30 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
JavaScript代码实现简单计算器
2020/12/27 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
Django框架下在视图中使用模版的方法
2015/07/16 Python
Python字符串、元组、列表、字典互相转换的方法
2016/01/23 Python
Python 3中的yield from语法详解
2017/01/18 Python
Django自定义分页效果
2017/06/27 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
Django模板Templates使用方法详解
2019/07/19 Python
python自动发微信监控报警
2019/09/06 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
python如何绘制疫情图
2020/09/16 Python
如何开发一个JQuery插件
2016/07/28 面试题
生产车间主任的个人自我鉴定
2013/10/25 职场文书
大学生实习证明范本
2014/01/15 职场文书
2014年度党员自我评议
2014/09/13 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
2016春季运动会前导词
2015/11/25 职场文书
小学一年级语文教学反思
2016/03/03 职场文书
Django 如何实现文件上传下载
2021/04/08 Python
MSSQL基本语法操作
2022/04/11 SQL Server
Python中npy和mat文件的保存与读取
2022/04/24 Python
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers