Pot.js と PotLite.js で利用可能。
Deferred かどうか分からない値を確実に Deferred インスタンスにして返します。
引数 x を、次のチェインに値が渡せるよう Deferred インスタンス化して返します。
何らかの関数の戻り値などが Deferred インスタンスなのかどうか
曖昧なときなどに有用です。
Pot.globalize() が適応済みの場合、Pot.Deferred.maybeDeferred() が maybeDeferred() で実行できます。
Pot.Deferred インスタンスを返します。
// ランダムに Deferred や Error, 文字列を返す関数 function randomDeferred() { var n = Math.random() * 10; if (n < 2) { return new Error('error'); } else if (n < 5) { return 'string'; } else if (n < 7) { return new Pot.Deferred().then(function() { return 'unfired'; }); } else { return Pot.Deferred.begin(function() { return 'fired'; }); } } Pot.Deferred.begin(function() { // 不明な値を取得 var value = randomDeferred(); // 次のチェインに繋げられるように Deferred 化する return Pot.Deferred.maybeDeferred(value); }).ensure(function(res) { Pot.debug(res); // (Error: error) or 'string' or 'unfired' or 'fired' });