Pot.Deferred.parallel

{Pot.Deferred} Pot.Deferred.parallel ({Array|Object|*} deferredList [, {Array|Object|*} deferredList2 [, ...]])

Pot.js と PotLite.js で利用可能。

引数 deferredList を並列処理で実行します。

配列またはオブジェクトからなる Pot.Deferred のリスト deferredList の、
すべての結果が揃ってから 返り値となる Pot.Deferred インスタンスを実行します。
この関数により、未知数の Deferred を同時実行 (並列) で処理することができます。
次のチェインの実行完了を待たずに 引数の複数コールバックを実行します。
すべての結果が揃うと、 返り値の Pot.Deferred インスタンスを開始します。
MochiKit でいう DeferredList と似ています。 そして JSDeferred.parallel をベースとしています。
Pot.globalize() が適応済みの場合、Pot.Deferred.parallel() が parallel() で実行できます。

新しい Pot.Deferred インスタンスを返します。

// 配列で指定
Pot.Deferred.parallel([
    Pot.Deferred.begin(function() {
        return 'foo';
    }),
    function() {
        return Pot.Deferred.succeed().then(function() {
            return Pot.Deferred.wait(1).then(function() {
                return 'bar';
            });
        });
    },
    (new Pot.Deferred()).then(function() {
        return 'baz';
    }).begin()
]).then(function(values) {
    Pot.debug(values);
    // values[0] == 'foo'
    // values[1] == 'bar'
    // values[2] == 'baz'
});

オブジェクトで指定。

Pot.Deferred.parallel({
    foo : function() {
        return 1;
    },
    bar : (new Pot.Deferred()).then(function() {
        return Pot.Deferred.begin(function() {
            return Pot.Deferred.wait(1).then(function() {
                return Pot.Deferred.succeed(2);
            });
        });
    }).begin(),
    baz : function() {
        var d = new Pot.Deferred();
        return d.async(false).then(function() {
            return 3;
        }).begin();
    }
}).then(function(values) {
    Pot.debug(values);
    // values.foo == 1
    // values.bar == 2
    // values.baz == 3
});