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 オブジェクトを 1 つにマージします。カテゴリ 2: 解決するために Promise がトリガーされる deferred.resolve([ args ] ) deferred.resolveWith( context, [ args ] )
と拒否 .reject .rejectWith
context context は、これと notification .notify .notifyWith
を置き換えます。カテゴリ 3: 解決された場合は deferred.done(args)、拒否された場合は deferred.fail()、deferred.progress() をトリガーする応答
解決または拒否に関係なく deferred.always()
deferred.then(doneCallbacks,failCallbacks[,progressCallbacks])
Promise (または遅延、遅延オブジェクトの取得方法)
var dfd = new $.Deferred(); return dfd.promise();
Promise の現在のステータスを返します
deferred.state() 保留中 (まだ完了していません) 解決されましたが拒否されました
パイプライン
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 の迅速な解決策は、エディターによって共有されたすべての内容です。参考にしていただければ幸いです。また、Script Home をサポートしていただければ幸いです。