举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > jquery deferred jQuery deferred.promise() 方法

jquery deferred jQuery deferred.promise() 方法

2023-05-17 17:31 jQuery教程

jquery deferred jQuery deferred.promise() 方法

jquery deferred

jQuery Deferred 对象是一个强大的工具,它可以帮助我们更好地管理异步代码。它可以让我们更容易地处理异步函数的返回值,并且可以让我们更好地处理多个异步函数之间的依赖关系。

jQuery Deferred 对象有三种状态:未完成(pending)、已完成(resolved)和已拒绝(rejected)。当一个 Deferred 对象处于 pending 状态时,它可以通过 resolve 方法将其切换到 resolved 状态,也可以通过 reject 方法将其切换到 rejected 状态。

Deferred 对象还有一些非常有用的方法来处理异步函数的返回值。例如,done 方法用于处理 resolve 状态的 Deferred 对象的返回值,而 fail 方法用于处理 rejected 状态的 Deferred 对象的返回值。

var dfd = $.Deferred();  // Create a new deferred object 
 
dfd.done(function(data) {  // Register done callback 
    console.log('Done: ' + data);  // This will be called when the deferred is resolved 
}); 
 
dfd.fail(function(data) {   // Register fail callback 
    console.log('Fail: ' + data);   // This will be called when the deferred is rejected 
}); 

 dfd.resolve('Hello World!');   // Resolve the deferred object with some data  

 dfd.reject('Something went wrong!');   // Reject the deferred object with some data  

 

jQuery deferred.promise() 方法

jQuery deferred.promise() 方法

jQuery 杂项方法jQuery 杂项方法

实例

设定两个延时时间是随机的定时器,分别用于解决(resolve)和拒绝(reject)延迟对象

$(function () {
    function
asyncEvent(){
        var
dfd = new jQuery.Deferred();
       
// 在一个随机的时间间隔之后 Resolve (解决状态)
        setTimeout
(function(){
            dfd
.resolve("欢呼");
        }
, Math.floor(400+Math.random()*2000));
        //
在一个随机的时间间隔之后 reject (拒绝状态)
       
setTimeout(function(){
            dfd
.reject("对不起");
        }
, Math.floor(400+Math.random()*2000));
       
// 每半秒显示一个"working..."消息
        setTimeout
(function working(){
            if
( dfd.state() === "pending" ) {
                dfd
.notify("working... ");
               
setTimeout(working, 500);
           
}
       
}, 1);
        //
返回 Promise 对象,调用者不能改变延迟对象
        return
dfd.promise();
    
}
     //
为异步函数附加一个done, fail, 和 progress 处理程序
     $.
when( asyncEvent() ).then(
         function
(status){
            
alert( status+', 事情进展顺利' );
        
},
         function
(status){
            
alert( status+', 这次你失败了' );
        
},
        
function(status){
             $
("body").append(status);
         }

     )
;
})


定义和用法

deferred.promise() 函数返回 Deferred(延迟)的 Promise 对象。

注意:1. 方法允许一个异步函数阻止那些干涉其内部请求的进度(progress)或状态(status)的其它代码。
2. 只包含 deferred 对象的一组方法,包括:done(),then(),fail(),isResolved(), isRejected(), always(), 这些方法只能观察一个 deferred 的状态,而无法更改 deferred 对象的内在状态。
3. deferred.promise()也可以接受一个 target 参数,此时传入的 target 将被赋予 Promise 的方法,并作为结果返回,而不是创建一个新对象。


语法

deferred.promise( [target ] )

参数描述
targetObject类型 绑定 promise 方法的对象。


实例

更多实例

使用目标参数
使用目标参数,促进现有对象的Promise


jQuery 杂项方法jQuery 杂项方法

阅读全文
以上是鳄鱼CMS为你收集整理的jquery deferred jQuery deferred.promise() 方法全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们