deferred.promise( [target ] )
来源:互联网 发布:php全栈工程师薪资 编辑:程序博客网 时间:2024/05/13 15:23
原文摘自:http://www.css88.com/jqapi-1.9/deferred.promise/(jQuery官方文档中文翻译)
deferred.promise( [target ] )
- target类型: Object绑定 promise 方法的对象。
deferred.promise()
方法允许一个异步函数阻止那些干涉其内部请求的进度(progress)或状态(status)的其它代码。Promise (承诺)对象仅会暴露那些需要绑定额外的处理或判断状态的延迟方法(then
, done
, fail
, always
,pipe
, progress
, state
,和 promise
)时,并不会暴露任何用于改变状态的延迟方法(resolve
, reject
, notify
,resolveWith
, rejectWith
, 和 notifyWith
).
如果提供target
参数,deferred.promise()
会将事件绑定到该参数上,然后返回该对象,而不是创建一个新的对象。 这个方法可以用于在已经存在的对象上绑定 Promise 行为的情况。
如果您要创建一个Deferred(延迟),并且保持这个Deferred(延迟)的引用,以便它可以在一些点来解决或拒绝。通过deferred.promise()
定义Promise(承诺)对象即可。这样的话,其它的代码就可以注册回调函数或检查当前状态。
欲了解更多信息,请参阅文档< Deferred object.
例子:
Example: 创建一个延迟对象,并设定两个延时时间是随机的定时器,分别用于受理(resolve)和拒绝(reject)延迟对象。无论哪一个先执行,都会调用其中一个回调函数。而另一个定时器则不会产生任何效果,因为在最先调用的那个定时器处理中,延迟对象已经处于完成状态(resolved 或 rejected 状态)。同时,还会设定一个定时器进度(progress)通知函数,用于进度通知处理,并在文档的 "body" 中显示 "working..."。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function asyncEvent() {
var dfd = jQuery.Deferred();
// Resolve after a random interval
setTimeout(function() {
dfd.resolve( "hurray" );
}, Math.floor( 400 + Math.random() * 2000 ) );
// Reject after a random interval
setTimeout(function() {
dfd.reject( "sorry" );
}, Math.floor( 400 + Math.random() * 2000 ) );
// Show a "working..." message every half-second
setTimeout(function working() {
if ( dfd.state() === "pending" ) {
dfd.notify( "working... " );
setTimeout( working, 500 );
}
}, 1 );
// Return the Promise so caller can't change the Deferred
return dfd.promise();
}
// Attach a done, fail, and progress handler for the asyncEvent
$.when( asyncEvent() ).then(
function( status ) {
alert( status + ", things are going well" );
},
function( status ) {
alert( status + ", you fail this time" );
},
function( status ) {
$( "body" ).append( status );
}
);
Example: Use the target argument to promote an existing object to a Promise:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Existing object
var obj = {
hello: function( name ) {
alert( "Hello " + name );
}
},
// Create a Deferred
defer = $.Deferred();
// Set object as a promise
defer.promise( obj );
// Resolve the deferred
defer.resolve( "John" );
// Use the object as a Promise
obj.done(function( name ) {
obj.hello( name ); // will alert "Hello John"
}).hello( "Karl" ); // will alert "Hello Karl"
0 0
- deferred.promise( [target ] )
- Deferred promise
- Promise/deferred(转)
- jQuery.Deferred和Promise
- jquery deferred promise
- Promise/Deferred模式
- Promise与deferred
- Promise对象和Deferred对象
- 【转载】jQuery Promise 实现 Deferred
- jquery中deferred和promise
- jQuery deferred 对象的 promise 方法
- Java Deferred/Promise 库JDeferred 实例
- 使用jQuery Deferred对象实现Promise
- jQuery中deferred、promise对象的使用
- jQuery的deferred对象和promise对象
- jquery的Deferred--promise的解决方案
- JS异步编程(promise、deferred对象)
- $.Deferred()的promise()方法-学习笔记
- 第一篇博客
- 对对对
- 训练指南UVALive5088解题报告
- iOS-TextField
- 树状数组
- deferred.promise( [target ] )
- 机器视觉核心期刊
- AVL树
- 这是安卓手机打开摄像头的一个小程序
- IO异常的处理
- Codeforces 584 A. Olesya and Rodion(Codeforces Round #324 (Div. 2))
- 十二、 操作符重载
- 如何关注国家的政策动向
- iOS新手入门之UIButton