jQuery deferred.promise() 方法

2018-11-22 14:56 更新

jQuery deferred.promise() 方法

jQuery 雜項(xiàng)方法jQuery 雜項(xiàng)方法

實(shí)例

設(shè)定兩個(gè)延時(shí)時(shí)間是隨機(jī)的定時(shí)器,分別用于解決(resolve)和拒絕(reject)延遲對象

$(function () {
    function
asyncEvent(){
        var
dfd = new jQuery.Deferred();
       
// 在一個(gè)隨機(jī)的時(shí)間間隔之后 Resolve (解決狀態(tài))
        setTimeout
(function(){
            dfd
.resolve("歡呼");
        }
, Math.floor(400+Math.random()*2000));
        //
在一個(gè)隨機(jī)的時(shí)間間隔之后 reject (拒絕狀態(tài))
       
setTimeout(function(){
            dfd
.reject("對不起");
        }
, Math.floor(400+Math.random()*2000));
       
// 每半秒顯示一個(gè)"working..."消息
        setTimeout
(function working(){
            if
( dfd.state() === "pending" ) {
                dfd
.notify("working... ");
               
setTimeout(working, 500);
           
}
       
}, 1);
        //
返回 Promise 對象,調(diào)用者不能改變延遲對象
        return
dfd.promise();
    
}
     //
為異步函數(shù)附加一個(gè)done, fail, 和 progress 處理程序
     $.
when( asyncEvent() ).then(
         function
(status){
            
alert( status+', 事情進(jìn)展順利' );
        
},
         function
(status){
            
alert( status+', 這次你失敗了' );
        
},
        
function(status){
             $
("body").append(status);
         }

     )
;
})

嘗試一下 ?

定義和用法

deferred.promise() 函數(shù)返回 Deferred(延遲)的 Promise 對象。

注意:1. 方法允許一個(gè)異步函數(shù)阻止那些干涉其內(nèi)部請求的進(jìn)度(progress)或狀態(tài)(status)的其它代碼。
2. 只包含 deferred 對象的一組方法,包括:done(),then(),fail(),isResolved(), isRejected(), always(), 這些方法只能觀察一個(gè) deferred 的狀態(tài),而無法更改 deferred 對象的內(nèi)在狀態(tài)。
3. deferred.promise()也可以接受一個(gè) target 參數(shù),此時(shí)傳入的 target 將被賦予 Promise 的方法,并作為結(jié)果返回,而不是創(chuàng)建一個(gè)新對象。


語法

deferred.promise( [target ] )

參數(shù)描述
targetObject類型 綁定 promise 方法的對象。


實(shí)例

更多實(shí)例

使用目標(biāo)參數(shù)
使用目標(biāo)參數(shù),促進(jìn)現(xiàn)有對象的Promise


jQuery 雜項(xiàng)方法jQuery 雜項(xiàng)方法

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號