0

私はモジュールで次のコードを持っています

var def = $.Deferred();

$.getJSON("http://localhost:62588/api/Values/getXMLData")
 .done(function(json){
      def.resolve($.parseJSON(json));
});

return def;

次に、返されたデータの処理を呼び出す前に、別のモジュールから呼び出して完了させる必要があります。

repository.getUserPolicies().done(function (userPolicies) {
    process(userPolicies);
});

これはうまく機能しますが、遅延オブジェクトがどのように機能するかはまだよくわかりません。

getJSONの遅延オブジェクトを使用できることを読みましたが、それが私がここで行っていることとまったく同じかどうかはわかりませんか?

このアプローチの不利な点があるかどうか疑問に思いましたか?

もっとエレガントにできますか?

ありがとう

4

1 に答える 1

6

いいえ、これは適切な使用法ではありません。これは$.Deferred$.getJSONjQueryの新しいバージョンでpromiseなどのサポートが追加された遅延オブジェクトがすでに組み込まれているためです。

done()その組み込みの遅延オブジェクトを使用して、ajax呼び出しを返すだけで、関数をそれに直接アタッチできます。

var repository = {
    getUserPolicies: function() {
        return $.getJSON("http://localhost:62588/api/Values/getXMLData");
    }
}

repository.getUserPolicies().done(process);

フィドル

于 2012-12-08T21:57:37.273 に答える