jquery Deferred 快速解決異步回調的問題
function ok(name){ var dfd = new $.Deferred(); callback:func(){ return dfd.resolve( response ); } return dfd.promise(); } $.when(ok(1),ok(2)).then(function(resp1,resp2){})
//相關API 分成3類
1類:$.when(pro1,pro1) 將多個 promise 對象以and的關系 合並為1個
2類:promise 激發為 解決 deferred.resolve([ args ] ) deferred.resolveWith( context, [ args ] )
和 拒絕 .reject .rejectWith
context 上下文 替換 this 和通知 .notify .notifyWith
3類: 對激發的響應 解決時deferred.done(args) 拒絕時 deferred.fail() 通知時 deferred.progress()
不管 解決 或 拒絕 deferred.always()
deferred.then( doneCallbacks, failCallbacks [, progressCallbacks] )
promise(或者叫deferred 延遲對象如何獲取?)
var dfd = new $.Deferred(); return dfd.promise();
返回promise當前狀態
deferred.state() pending(尚未完成) resolved rejected
管道
deferred.pipe( [ doneFilter ], [ failFilter ] ) var defer = $.Deferred() var filtered = defer.pipe( null, function( value ) { return value * 3; }); defer.reject( 6 ); filtered.fail(function( value ) { alert( "Value is ( 3*6 = ) 18: " + value ); });
以上這篇jquery Deferred 快速解決異步回調的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。