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 相关文章推荐
jquery动态增加text元素以及删除文本内容实例代码
Jul 01 Javascript
javascript 获取模态窗口的滚动位置代码
Aug 06 Javascript
JavaScript中的比较操作符&gt;、=、
Dec 31 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
Sep 22 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
Sep 30 Javascript
javascript笔记之匿名函数和闭包
Feb 06 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
May 08 jQuery
JavaScript实现快速排序的方法分析
Jan 10 Javascript
bootstrap-table formatter 使用vue组件的方法
May 09 Javascript
vue实现前台列表数据过滤搜索、分页效果
May 28 Javascript
解析原来浏览器原生支持JS Base64编码解码
Aug 12 Javascript
JavaScript 严格模式(use strict)用法实例分析
Mar 04 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
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
关于js和php对url编码的处理方法
2014/03/04 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
PDO操作MySQL的基础教程(推荐)
2017/08/18 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
浅谈javascript实现八大排序
2015/04/27 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
JavaScript中的闭包
2016/02/24 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
2016/06/13 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
js实现导航栏中英文切换效果
2017/01/16 Javascript
关于jQuery中fade(),show()起始位置的一点小发现
2017/04/25 jQuery
vue使用vue-cli快速创建工程
2017/07/28 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
Python生成随机密码的方法
2017/06/16 Python
Python DataFrame设置/更改列表字段/元素类型的方法
2018/06/09 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
10招!看骨灰级Pythoner玩转Python的方法
2019/04/15 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
Python爬虫制作翻译程序的示例代码
2021/02/22 Python
GNC健安喜美国官网:美国第一营养品牌
2016/07/22 全球购物
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
应届生高等护理求职信
2013/10/12 职场文书
关于礼仪的演讲稿
2014/01/04 职场文书
幼儿园安全检查制度
2014/01/30 职场文书
个人专业技术总结
2015/03/05 职场文书
世界文化遗产导游词
2019/08/07 职场文书
Python selenium的这三种等待方式一定要会!
2021/06/10 Python
Python类方法总结讲解
2021/07/26 Python
python 多态 协议 鸭子类型详解
2021/11/27 Python
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js
mysql全面解析json/数组
2022/07/07 MySQL