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 相关文章推荐
JavaScript Eval 函数使用
Mar 23 Javascript
js实现兼容IE6与IE7的DIV高度
May 13 Javascript
js和jquery中循环的退出和继续学习记录
Sep 06 Javascript
jquery实现在光标位置插入内容的方法
Feb 05 Javascript
JavaScript事件处理的方式(三种)
Apr 26 Javascript
AngularJS 执行流程详细介绍
Aug 18 Javascript
Vue.js表单控件实践
Oct 27 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
Jun 25 Javascript
vue2.0安装style/css loader的方法
Mar 14 Javascript
还不懂递归?读完这篇文章保证你会懂
Jul 29 Javascript
vue循环数组改变点击文字的颜色
Oct 14 Javascript
JavaScript冒泡算法原理与实现方法深入理解
Jun 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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
PHP的Socket网络编程入门指引
2015/08/11 PHP
php使用strip_tags()去除html标签仍有空白的解决方法
2016/07/28 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
js函数般调用正则
2008/04/08 Javascript
判断脚本加载是否完成的方法
2009/05/26 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
jquery插件star-rating.js实现星级评分特效
2015/04/15 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
vue + socket.io实现一个简易聊天室示例代码
2017/03/06 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
[01:00:54]TI4正赛第二日开场
2014/07/20 DOTA
为Python程序添加图形化界面的教程
2015/04/29 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
pytorch + visdom 处理简单分类问题的示例
2018/06/04 Python
python时间日期操作方法实例小结
2020/02/06 Python
Python如何telnet到网络设备
2021/02/18 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
洗煤厂厂长岗位职责
2014/01/03 职场文书
采购主管岗位职责
2014/02/01 职场文书
文明好少年事迹材料
2014/08/19 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
《分数乘法》教学反思
2016/02/24 职场文书