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 ] )

參數 描述
target Object類型 綁定 promise 方法的對象。


實例

更多實例

使用目標參數
使用目標參數,促進現有對象的Promise


jQuery 雜項方法jQuery 雜項方法