Pot.js と PotLite.js で利用可能。
jQuery の Ajax 系関数を Pot.Deferred 化し、プラグインを追加します。
Pot.deferrizejQueryAjax() を実行することで jQuery プラグインとして利用できます。
jQuery が利用可能な場合、 jQuery.ajax 系の関数の戻り値が Pot.Deferred インスタンス になるよう変換します。
jQuery.ajax(), jQuery.get(), jQuery.post(), jQuery.getJSON() などの関数に影響します。
また、プラグインとして deferred というメソッドを追加します。
jQuery.fn.deferred() は、任意の jQuery メソッドを Deferred 化し、Pot.Deferred インスタンスが返るようにします。
jQuery('div#hoge').deferred('hide', 'slow').then(function() { // .hide() が完了した後に実行される jQuery('div#message').text('div#hoge closed'); });
Pot.deferrizejQueryAjax() は現状、ライブラリ側で実行しません。
なので、プラグインを使用する場合は コードの最初などで実行する必要があります。
返り値はありません。
// jQuery を読み込んだ後に実行 Pot.deferrizejQueryAjax(); // Ajax 系の関数が Pot.Deferred を返すようになる $.getJSON('/hoge.json').then(function(data) { alert(data.results[0].text); }).rescue(function(err) { alert('Error! ' + err); }).ensure(function() { return someNextProcess(); }); // エフェクトなどを Deferred 化する 'deferred' が追加される $('div#hoge').deferred('hide', 'slow').then(function() { // ...( hide() が終了したあとの処理) });