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 tab切换(防止页面刷新)
May 23 Javascript
原生javascript实现DIV拖拽并计算重复面积
Jan 02 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
Apr 26 Javascript
JavaScript来实现打开链接页面的简单实例
Jun 02 Javascript
AngularJS创建自定义指令的方法详解
Nov 03 Javascript
文件上传插件SWFUpload的使用指南
Nov 29 Javascript
JS作用域深度解析
Dec 29 Javascript
基于es6三点运算符的使用方法(实例讲解)
Oct 12 Javascript
JavaScript 隐性类型转换步骤浅析
Mar 15 Javascript
element-ui表格合并span-method的实现方法
May 21 Javascript
基于form-data请求格式详解
Oct 29 Javascript
vue element-ui实现动态面包屑导航
Dec 23 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实现用户注册登录功能
2016/10/14 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
2013/09/27 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
加快Vue项目的开发速度的方法
2018/12/12 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
python使用webbrowser浏览指定url的方法
2015/04/04 Python
Python中几个比较常见的名词解释
2015/07/04 Python
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
Python视频爬虫实现下载头条视频功能示例
2018/05/07 Python
详解Python做一个名片管理系统
2019/03/14 Python
基于Python fminunc 的替代方法
2020/02/29 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
日本PLST在线商店:日本时尚杂志刊载的人气服装
2016/12/10 全球购物
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
一套Delphi的笔试题二
2013/05/11 面试题
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
四议两公开实施方案
2014/03/28 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
课前一分钟演讲稿
2014/08/26 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
Redis Stream类型的使用详解
2021/11/11 Redis
Windows 11上手初体验:任务栏和开始菜单等迎来大改
2021/11/21 数码科技
RestTemplate如何通过HTTP Basic Auth认证示例说明
2022/03/17 Java/Android
Golang入门之计时器
2022/05/04 Golang