jquery中对于批量deferred的处理方法

这篇文章主要介绍了jquery中对于批量deferred的处理方法,有需要的朋友可以参考一下

此代码仿照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教程 时间:2012-01-07 人气:2
本文关键词:
分享到:

相关文章

  • jquery基础教程之deferred对象使用方法 2014-04-03

    jquery基础教程之deferred对象使用方法 一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。 通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。 但是,在回调函数方面,jQuery的功能非常弱。为了改变这一点,jQuery开发团队就设计了deferred对象。 简

  • jQuery:理解$(document).ready()的特殊写法 2013-09-09

    看书时注意到下面两条语句的功效是相同的, $(function(){alert("hello!");}); $(document).ready(function(){alert("hello!");}); 这个特殊写法就是用$()代替$(document).ready(),类似于(有差异)window.onload弹出个窗口: 查看jQuery1.8.3源代码,是这样封装的: (function( window, undefined ) { /*...jQuery源代码全部都在这里了...*/

  • 前端编程提高之旅(九)----延迟对象 2014-06-27

    近日做内部推荐项目,在进入项目首页时,需要进行预调用接口判断,按照以往的习惯,应该将调用接口后执行的代码,放入ajax请求success内执行。这样当然可以,但是代码组织和可读性都没有那么高。通过查看Jquery官网api发现了deferred object(延迟对象)这个概念。 一、API文档的翻译: 延迟对象,在jquery1.5被引入,是调用jQuery.Deferred()方法生成的一个链式功用对象。它可以注册多个回调到回调队列,提取回调队列,传递任何异步或同步函数的成功或失败状态。 延

  • jQuery 的对象构建.初始化 2012-01-01

    jQuery 作为当今最优秀的js 类库之一,必须是要花时间好好学习下的,今天正好蛋疼,读了里面一些代码,小结一下: 整个类库定义在一匿名函数中,杜绝了全局变量的产生; 将undefined 作为缺失的参数传递,防止了undefined 变量的污染; 可以看出$(...) 实际上返回的是jQuery.fn.init 对象的实例,随后将该对象的prototype 指向了jQuery.prototype (语句jQuery.fn.init.prototype = jQuery.fn),因此产生的实例

  • 强大的JQuery(三)--操作html与遍历 2012-01-05

    前两篇博客讲到了JQuery的基础知识以及其动画效果,本篇将为大家介绍jquery操纵html以及jquery的遍历。 一、jquery操作html 1.获取内容和属性 text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设置或返回表单字段的值 attr()- 方法用于获取属性值。 实例: $("#btn1").click(function(){ alert("Text: " + $("#test").text())

  • JQuery UI Dialog的样式设置问题 2012-01-05

    本篇文章主要是对JQuery中UI Dialog的样式设置问题进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 最近在用一个JQUERY UI Dialog的插件,感觉特别强大,但样式设置比较麻烦,研究了俩天终于搞定了。 运行插件,需要的环境如下 <script src="../../JS/jquery-1.4.2.js" type="text/javascript"></script> <script src="../JS/jquery.ui.j

  • jQuery父级以及同级元素查找的实例 2012-01-12

      父级以及同级元素的查找在使用过程中还是蛮频繁的,下面为大家介绍下jQuery是如何实现的,感兴趣的朋友可以参考下   jQuery.parent(expr) 找父亲节点,可以传入expr进行过滤,比如$(“span”).parent()或者$(“span”).parent(“.class”)   jQuery.parents(expr),类似于jQuery.parents(expr),但是是查找所有祖先元素,不限于父元素   jQuery.children(expr).返回所有子节点,这个方

  • 学习JQuery - 14 2012-01-13

    第5章 操纵DOM 1. 操作属性 我们在第四章已经使用jQuery来读取和设置CSS,在本章我们使用jQuery来操作DOM。 本节介绍一个常用的方法:attr() 参数:属性名和属性值 例如,我们把下面的链接上增加提示 js代码 $('div.chapter a').attr('title', 'external'); html文件见附录。 当我们获取属性值的时候,必须是定义的。 js代码 window.alert($('p.square').attr('font')); 如下代码即可正常运

  • jQuery对select操作小结(遍历option,操作option) 2012-01-17

    本篇文章是关于jQuery对select的操作进行了总结介绍,需要的朋友可以参考下 //遍历option和添加、移除optionfunction changeShipMethod(shipping){ var len = $("select[@name=ISHIPTYPE] option").length if(shipping.value != "CA"){ $("select[@name=ISHIPTYPE] option").each(function(){ if($(this).val(

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.145 (s). 10 q(s)