0

プロミスを返す関数があり、その中で別の関数を呼び出します。このプロミスのステータスは、内部のプロミスのステータスに基づいています。

このプロセスを簡略化する方法はありますか。以下の例を見てください。

    function foo(bar) {
        var deferred = Q.defer();

        switch (bar) {
            case 'baz1':
                deferred.resolve();
                break;
            case 'baz2':
                deferred.reject();
                break;
            case 'this_is_how_i_do_it':
                funReturningPromise().then(function (value) {
                    deferred.resolve(value);
                }, function (err) {
                    deferred.reject(err);
                });
                break;
            case 'can_we_do_it_like_this':
                // can we do something like this, which will resolve or reject the deferred, 
                // based on the status promise returned by funReturningPromise().
                // 'chain' is just a name
                funReturningPromise().chain(deferred);
                break;
        }

        return deferred;
    }

ありがとう、

4

3 に答える 3

2

より複雑な関数ではうまくいきませんが、あなたの例では次のようなことができます:

        case 'can_we_do_it_like_this':
            return funReturningPromise();

promise.prototype.chainq プロミスのみを使用している場合は、独自のメソッドを追加することもできます。

于 2013-08-14T09:40:59.703 に答える
0

すでに deferred がある場合は、別の promise で解決できます。

deferred.resolve(funReturningPromise())

そうでなければ、クリスが言ったこと。

于 2015-01-14T02:05:19.663 に答える