我想从外部服务加载一些 JSON 数据。然而,它提供
{ foo: ..., bar: ..., useful: {...} }
而我真正关心的是“有用”的部分。我只需要将那部分传递给success
回调。
我正在尝试使用Deferred
一次从多个数据源加载——像这样。我想检索数据,“按摩”结果,并将上面示例中的“有用”部分实际传递给then
回调。我的理解是,当你传递一个Deferred
towhen()
时,数据直接进入传递给的回调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){ ... });