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 相关文章推荐
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
Mar 27 Javascript
js定时调用方法成功后并停止调用示例
Apr 08 Javascript
jquery学习总结(超级详细)
Sep 04 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
Apr 14 Javascript
javascript 闭包详解
Jul 02 Javascript
jQuery Ajax使用FormData对象上传文件的方法
Sep 07 Javascript
全面解析Bootstrap表单样式的使用
Sep 09 Javascript
js实现上传图片预览方法
Oct 25 Javascript
Vue.js实现列表清单的操作方法
Nov 15 Javascript
vue.js做一个简单的编辑菜谱功能
May 08 Javascript
javascript事件监听与事件委托实例详解
Aug 16 Javascript
layui异步加载table表中某一列数据的例子
Sep 16 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读取XML值的代码(推荐)
2011/01/01 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
完美实现wordpress禁止文章修订和自动保存的方法
2014/11/03 PHP
理解PHP中的Session及对Session有效期的控制
2016/01/08 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
基于vue.js实现分页查询功能
2018/12/29 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
pygame实现俄罗斯方块游戏
2018/06/26 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
django基础学习之send_mail功能
2019/08/07 Python
Linux下升级安装python3.8并配置pip及yum的教程
2020/01/02 Python
Python读写锁实现实现代码解析
2020/11/28 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
英国工作场所设备购买网站:Slingsby
2019/05/03 全球购物
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
手工制作的男士奢华英国鞋和服装之家:Goodwin Smith
2019/06/21 全球购物
初中生物教学反思
2014/01/10 职场文书
自我评价的范文
2014/02/02 职场文书
社区母亲节活动记录
2014/03/06 职场文书
安全生产月活动总结
2014/05/04 职场文书
百年校庆感言
2015/08/01 职场文书
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python