0

私は新しいjQuery.Deferredオブジェクトについてたくさん読んでいます。本当に便利なことの1つは、既存のオブジェクトを遅延オブジェクトに変換できることです。そうすれば、データの取得元について100%の柔軟性が得られます。

私はの線に沿って何かを考えています

$.makeDeferred({property: "data"}) // returns an object with .promise() method, in resolved state, and that passes the original object as data/context to any callback function

このメソッドがすでに存在するかどうか、またはどのように作成するかを誰かが知っていますか?

4

1 に答える 1

0

この効果を得るためにオブジェクトをラップする必要はありません。パラメーターとしてpromiseが渡されるほとんどのメソッドは、プレーンオブジェクトを既に解決されたpromiseとして扱うためです。

そうは言っても、本当にこれが必要な場合は、これを試してください。

(function($) {
    $.makeDeferred = function() {
        var d = $.Deferred();
        d.resolve(arguments);
        return d.promise();
    };
))(jQuery);

これにより、少なくとも、 promiseを渡すのではなく、たとえば、promiseのメソッド呼び出したい場合も処理できます。my_promise.done()$.when(my_promise)

[テストされていない、動作しない可能性がある、E&OEなど]

編集

実際、私はあなたがしなければならないのはあなたのプレーンな古いデータを$.when:でラップすることだけだと思います

$.when({property: "data"})
于 2011-04-13T09:13:18.183 に答える