Pot.js と PotLite.js で利用可能。
コンストラクタ。Pot.Deferred インスタンスを作成します。
Pot.Deferred コンストラクタ。
新しい Pot.Deferred インスタンスを作成します。
Pot.Deferred を利用することで、非同期処理が簡単に記述できます。
詳しくは、Deferred リファレンス のセクション を参照ください。
new Pot.Deferred()
とすることで、新しいインスタンスが得られます。
Pot.globalize() が適応済みの場合、new Deferred()
として得られます。
引数 options にオブジェクトを渡すことで、設定が可能です。
options に有効なキー:
同期、非同期を切り替えます。デフォルトは非同期で true です。
false にすると同期で Deferred チェインが実行されます。
async() メソッドにより、チェインの上で変更できます。
Deferred チェインの速度の設定ができます。
数値で指定するとミリ秒で扱われます。
文字列で指定する場合は、下の定数/値が指定できます。
値 / メソッド名 | 速度 |
limp | 最も遅い |
doze | 遅い |
slow | 遅め |
normal | 通常 |
fast | 速め |
rapid | 速い |
ninja | 最も速い |
任意に cancel() した時に実行される関数を指定します。
また、コンストラクタで指定しない場合でも、
チェイン上で
canceller() メソッドを使い関数の登録もできます。
options の指定はすべて任意です。
Pot.Deferred オブジェクト インスタンスを返します。
var d = new Pot.Deferred(); d.then(function() { return 100; }).then(function(res) { debug(res); // 100 }).begin();
var d = new Pot.Deferred({ async : true, speed : 'slow' }); d.then(function(res) { debug('Begin'); debug(res); // 1 return res + 1; }).then(function(res) { debug(res); // 2 return res + 1; }).then(function(res) { debug(res); // 3 // raise an error undefinedFunction.call(); }).rescue(function(err) { // catch the error debug('my error : ' + err); // my error: undefinedFunction is not defined }).then(function() { debug('End.'); }).begin(1);