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'
});