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 相关文章推荐
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
Aug 13 Javascript
用javascript添加控件自定义属性解析
Nov 25 Javascript
javascript中数组的多种定义方法和常用函数简介
May 09 Javascript
深入讲解AngularJS中的自定义指令的使用
Jun 18 Javascript
Uploadify上传文件方法
Mar 16 Javascript
jquery对象与DOM对象转化
Feb 08 Javascript
Angular获取手机验证码实现移动端登录注册功能
May 17 Javascript
vue 的keep-alive缓存功能的实现
Mar 22 Javascript
vue webpack打包后图片路径错误的完美解决方法
Dec 07 Javascript
JS基于对象的链表实现与使用方法示例
Jan 31 Javascript
vue.js 解决v-model让select默认选中不生效的问题
Jul 28 Javascript
Javascript实现关闭广告效果
Jan 29 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
教你IIS6的PHP最佳配置方法
2006/09/05 PHP
繁体中文转换为简体中文的PHP函数
2006/10/09 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
探讨JavaScript中声明全局变量三种方式的异同
2013/12/03 Javascript
jQuery数据类型小结(14个)
2016/01/08 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
bootstrap table操作技巧分享
2017/02/15 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
浅谈Vue数据绑定的原理
2018/01/08 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
Angular 中使用 FineReport不显示报表直接打印预览
2019/08/21 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
[01:08:43]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第一场 1月9日
2021/03/11 DOTA
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
Python实现监控程序执行时间并将其写入日志的方法
2015/06/30 Python
Django中使用Celery的教程详解
2018/08/24 Python
利用Python实现原创工具的Logo与Help
2018/12/03 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
python实现证件照换底功能
2019/08/20 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
python解包用法详解
2021/02/17 Python
迟到检讨书800字
2014/01/13 职场文书
车辆工程专业求职信
2014/06/14 职场文书
营销计划书
2015/01/17 职场文书
水电工岗位职责
2015/02/14 职场文书
护林员个人总结
2015/03/04 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
2019大学毕业晚会主持词
2019/06/21 职场文书
pytorch 如何使用float64训练
2021/05/24 Python