Pot.Deferred.maybeDeferred

{Pot.Deferred} Pot.Deferred.maybeDeferred ({*} x)

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 {
        return Pot.Deferred.begin(function() {
            return 'deferred';
        });
    }
}

Pot.Deferred.begin(function() {
    // 不明な値を取得
    var value = randomDeferred();
    // 次のチェインに繋げられるように Deferred 化する
    return Pot.Deferred.maybeDeferred(value);
}).ensure(function(res) {
    Pot.debug(res); // (Error: error) or 'string' or 'deferred'
});