外部サービスから JSON データをロードしたいと考えています。ただし、
{ foo: ..., bar: ..., useful: {...} }
私が本当に気にかけているのは、「役に立つ」部分です。success
その部分だけをコールバックに渡す必要があります。
Deferred
複数のデータ ソースから一度にロードするために使用しようとしています。このようなものです。データを取得し、結果を「マッサージ」して、上記の例の「有用な」部分だけを実際にコールバックに渡したいと思いthen
ます。私の理解では、 to を渡すDeferred
とwhen()
、データは に渡されたコールバックに直接送られるためthen()
、そこに到達する前にプロセスにフックする必要があります。
試してみdataFilter
ましたが、JSONP では不可能です。これらの結果を傍受する他の方法はありますか? then()
キャッシュされたデータを「新鮮な」結果とは異なる方法で処理するために、コールバックにいくつかのチェックを追加できますが、そのようなものはDeferred
そもそもの魔法を失います。
明確にするために、これは機能しません:
$.when($.ajax({
url: "host/service",
dataType: "jsonp",
dataFilter: function(data, type){
return data.useful; // throws, data === undefined
}
})).then(function(usefulStuff){ ... });