function wait() {
//setTimeout是异步,如果需要保证可以进行同步操作
//需要通过promise来操作,通过$.Deferred对象的.promise()方法可以获取promised对象
var def = $.Deferred();
setTimeout(function(){
alert("invoke");
//通过调用def的resolve来指定函数已经执行完成
//执行成功使用resolve,执行失败使用reject来指定
//def.resolve("abc");
//第一个参数是上下文对象
def.rejectWith($("div"),["ok"]);
},3000)
return def.promise();
}
wait().done(function(value){
alert("success:"+value);
}).fail(function(value){
//默认情况this是指向这个函数的对象,如果希望获取相应的上下文做this
//可以在调用的时候通过def.rejectWith("上下文对象")
alert(this.append("abc"));
alert("fail:"+value[0])
});
//还是这个先执行
alert("yy");
- 浏览: 316092 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (286)
- 设计模式 (14)
- spring (5)
- 开发工具 (12)
- java (19)
- apache.commons工具 (7)
- ibaits (5)
- extjs4.0 (4)
- 数据库 (2)
- spring工具类 (2)
- jquery1.8 (32)
- 杂记 (1)
- linux (2)
- Quart (1)
- springMVC (2)
- webservice (1)
- oracle (5)
- dwr (6)
- jbmp3 (27)
- lucene3.5 (27)
- javascript (18)
- hibernate3.3.2 (27)
- spring事务管理 (10)
- nio (2)
- strust2 (3)
- jvm (7)
- jquery-easyui-1.2.6 (22)
- 多线程 (14)
- maven (3)
- 常用正则表达式 (4)
最新评论
-
HF_SKY000:
请问:
一、能否提供一下密钥库文件的生成方法?
二、密钥库的密 ...
Java sslSocket 聊天实例
发表评论
-
三十二、pipe
2013-05-14 09:57 766/*pipe表示可以返回一个promise对象,这样就可以支持 ... -
三十、deferred
2013-05-13 11:05 827JQuery的1.5之后提供了Deferred和Promi ... -
二十九、ajax处理方式---ajax
2013-05-13 10:03 766在get和post不满足要求的时候可以使用$.ajax ... -
二十八、ajax处理方式---get/post
2013-05-10 16:01 851jQuery.get(url,[data],[callbac ... -
二十七、ajax处理方式---load
2013-05-10 15:22 773load(url,[data],[callback]) $ ... -
二十六、基于包装集的插件
2013-05-10 14:54 1395要定义基于包装集的插件,完全可以使用jQuery.protot ... -
二十五、插件的定义
2013-05-10 13:57 797插件命名:使用jquery.命名空间.js$符号的冲突问题:( ... -
二十四、数组工具
2013-05-09 10:13 789/* * grep有两个参数,第一个表示元素值,第二个表示 ... -
二十三、extend
2013-05-09 10:12 551//会用第二个参数来覆盖第一个参数,没有的就不进行覆盖。第 ... -
二十二、常用工具
2013-05-09 10:12 578//检查版本是否是IEalert($.browser.ms ... -
二十一、$和其他库的冲突问题
2013-05-08 09:20 472$(function() { /* * 在j ... -
二十、animate
2013-05-08 09:20 802$("#go").click(func ... -
十九、标准动画
2013-05-08 09:20 774// $(".topicList h3" ... -
十八、mouse
2013-05-08 09:19 994/* * 当时有mouseover的时候,如果从父类移到子 ... -
十七、delegate和on
2013-05-08 09:19 1021/* * 由于live事件写法很怪,所以在1.4之后提供了 ... -
十六、live和事件委派
2013-05-07 15:49 718$(".ccc").live(" ... -
十五、trigger和triggerHandler
2013-05-07 15:31 971$("*").bind("cl ... -
十四、one
2013-05-07 15:21 689//仅仅只会执行一次$("*").one( ... -
十三、bind
2013-05-07 15:20 878//可以通过空格绑定多个事件$("#child&q ... -
十二、jquery事件简介
2013-05-07 15:14 718$(function() { $("#chi ...
相关推荐
1. **$.Deferred()**:这是创建Deferred对象的方法。在jQuery1.8版本之后,通过`then()`方法会返回一个新的受限制的deferred对象,即`deferred.promise()`,使得可以进一步链式调用。 2. **resolve()**:当异步操作...
在jQuery中,`$.Deferred()`是一个工厂函数,用于创建Deferred对象。这个对象拥有两个关键状态:pending(等待)和resolved(已完成)或rejected(已失败)。它的主要目的是管理和协调异步操作,通过链式调用来跟踪...
1. **$.Deferred()**:创建一个新的deferred对象。 2. **deferred.done()**:当deferred对象的状态变为“已完成”时,调用指定的回调函数。 3. **deferred.fail()**:当deferred对象的状态变为“已失败”时,调用...
首先创建一个`deferred`对象,然后在函数内部根据情况调用`resolve()`或`reject()`: ```javascript var defer = $.deferred(); var wait = function(defer) { var tasks = function() { console.log('执行完毕!...
总的来说,`deferred.promise()` 提供了一种安全的机制,用于将异步操作的控制权交给创建者,同时让使用者只能观察和响应状态变化,而不能影响操作的执行流程。这种设计在复杂的异步编程中,能够显著提高代码的可...
创建一个deferred对象很简单,只需要通过$.Deferred()函数即可。例如: ```javascript var deferred = $.Deferred(); ``` 这个deferred对象可以被用来控制异步操作的状态,包括pending(等待中)、resolved(已解决...
jQuery的`deferred`对象是实现异步操作的一种手段,它是对Promise/A+规范的早期实现。在jQuery 1.5及以后的版本中,`deferred`对象被引入,作为处理异步操作回调的一种更优雅的方式。 `deferred`对象的核心在于它...
JavaScript中的`Deferred`和`Promise`是用于处理异步操作的重要工具,特别是在创建响应式应用程序时。`Deferred`对象由jQuery引入,而`Promise`则是ES6标准的一部分,两者密切相关,但有一些区别。 首先,`Deferred...
例如,你可能需要在某些条件满足后才决议或拒绝一个Promise,这时你可以创建一个Deferred对象: ```javascript var deferred = $.Deferred(); $.ajax({url: "/myServerScript"}).done(deferred.resolve).fail...
它可以处于三种状态之一:未完成(pending)、已完成(resolved)和已拒绝(rejected)。在异步操作成功完成时,它会被设置为已完成状态,而失败则会设置为已拒绝状态。 使用deferred对象的优势在于,它提供了一种...
`getData`函数创建了一个`deferred`对象,并在AJAX请求成功后通过`deferred.resolve(data)`解决这个`deferred`。返回的是`deferred.promise()`,这样在调用`recycleData`时,可以通过`.when(getData(i)).done...
1. 创建Deferred对象: ```javascript var Q = require('q'); // 引入Q库,它提供了Deferred的实现 var deferred = Q.defer(); ``` 2. 使用`resolve`和`reject`: 当异步操作成功时,调用`deferred.resolve...
在jQuery中创建Deferred对象时,我们并没有像创建ES6的Promise对象那样传入一个执行器函数。而且,Deferred对象允许我们直接调用`resolve`方法,这给了我们修改其状态的能力,这在某些情况下可能造成问题。为了解决...
qryq qryq是NodeJs库,它允许一个人将有向查询的任意集合表达和运行为有向无环图。 它的名称源自“查询队列”。添加到您的项目npm install qryq --save 在项目中使用它: var qryq = require('qryq'); 用法创建一个...
在这个例子中,`first()` 函数返回一个由 `$.Deferred()` 创建的 `Promise`,在异步操作(模拟延迟)完成后调用 `defer.resolve()` 来改变 `Promise` 的状态。然后 `second()` 函数作为 `then()` 方法的参数,会在 `...
以加载图片为例,我们可以创建一个`loadImg`函数,该函数内部使用$.Deferred来封装异步的图片加载过程: ```javascript var loadImg = function(url) { var img = new Image(), deferred = $.Deferred(); img.src...