var data={};
var j1,j2,j3;
$.when(
$.getJSON("site1.com?something",function(site1){
data.site1=site1;
}),
$.getJSON("site2.com?something",function(site2){
data.site2=site2;
}),
$.getJSON("site3.com?something",function(site3){
data.site3=site3;
})
).then(function(){
console.dir(data);
});
如何将json调用分配给变量j1,j2和j3,在这个排列中何时何地设置超时?
j1.abort();
这有时会有用,如果说site2没有响应,但是site1和site3做了......在上面的当前安排中,那么永远不会被解雇
答案 0 :(得分:1)
如何将json调用分配给when
中的变量j1,j2和j3
您可以将每个$.getJSON
的结果完全按照其编写方式分配给变量:
$.when(
j1 = $.getJSON("site1.com?something", function(site1) {
data.site1 = site1;
}),
j2 = $.getJSON("site2.com?something", function(site2) {
data.site2 = site2;
}),
j3 = $.getJSON("site3.com?something", function(site3) {
data.site3 = site3;
})
).then(function(){
console.dir(data);
});
我会在这种安排中将设置超时放在哪里?
如果您询问如何更改默认超时,可以使用$.ajaxSetup
和timeout
选项进行设置,该选项接受超时(以毫秒为单位)。您无需担心超时并在任何请求上调用.abort
,这将自动发生。
$.ajaxSetup({
timeout: 3000 // 3 seconds
});
最后,即使其中一个请求超时,您似乎也想要调用回调。这被认为是失败,因此不会调用成功回调。您需要将失败回调传递给then
,作为第二个参数:
$.when(...)
.then(function () {
console.log('success!');
}, function () {
console.log('1 or more requests failed!')
});