我想从外部服务加载一些JSON数据。但是,它提供了
{ foo: ..., bar: ..., useful: {...} }
我真正关心的是“有用”部分。我需要将该部分传递给success
回调。
我正在尝试使用Deferred
一次从多个数据源加载 - 类似于this。我想检索数据,“按下”结果,并且只是上面示例中的“有用”部分实际传递给then
回调。我的理解是,当你将Deferred
传递给when()
时,数据会直接传递给传递给then()
的回调,所以我需要在它到达之前挂钩进程。
我尝试了dataFilter
但是对于not possible的JSONP。有没有其他方法来拦截这些结果?我可以在then()
回调中添加一些检查来处理缓存数据,与“新鲜”结果不同,但这种检查首先失去了Deferred
的魔力。
澄清一下,这不起作用:
$.when($.ajax({
url: "host/service",
dataType: "jsonp",
dataFilter: function(data, type){
return data.useful; // throws, data === undefined
}
})).then(function(usefulStuff){ ... });
答案 0 :(得分:2)
您可以致电.pipe()
来处理数据并创建新的Deferred:
$.getJSON(...).pipe(function(results) {
return ...;
})