これは$.when
から返される約束の機能ではありません。あなたは容易にかかわらず、それを自分で書くことができます:
function whenWithAbort(...xhrs) {
return {
abort() {
xhrs.forEach(xhr => {
xhr.abort();
});
},
promise: $.when(...xhrs)
};
}
は、使用方法(ただし、代替については下記を参照してください。):
var ops = whenWithAbort(
$.getJSON("a.json"),
$.getJSON("b.json")
)
.promise.done((res)=>{
// whatever...
});
// abort the all AJAX calls after N miliseconds
setTimeout(()=>{ ops.abort() }, 2000);
あるいは実際に、より一般的に、ちょうどwhen
- 配列付き:
function whenPlus(...list) {
return {
list,
promise: $.when(...list)
};
}
次に:
var ops = whenWithAbort(
$.getJSON("a.json"),
$.getJSON("b.json")
)
.promise.done((res)=>{
// whatever...
});
// abort the all AJAX calls after N miliseconds
setTimeout(()=>{ ops.list.forEach(op => { op.abort() } }, 2000);
それともあなたはそれをすべてのエントリの名前のメソッドを呼び出す方法与えることができる:私がやってしまった
var ops = whenWithAbort(
$.getJSON("a.json"),
$.getJSON("b.json")
)
.promise.done((res)=>{
// whatever...
});
// abort the all AJAX calls after N miliseconds
setTimeout(()=>{ ops.callOnEach("abort") }, 2000);
$ .getJSONによって返された値に中止がありますか? –
'$ .getJSON'自体は' abort'メソッドを持っていますが、堅牢なソリューションが必要で、それぞれの '$ .getJSON'を手作業で変数につないで一つずつ打ち切らないようにしてください。 – vsync