jQueryのドキュメントによると:
To execute a function after two ajax requests are successful:
$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1, a2){
/* a1 and a2 are arguments resolved for the
page1 and page2 ajax requests, respectively */
var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */
if ( /Whip It/.test(jqXHR.responseText) ) {
alert("First page has 'Whip It' somewhere.");
}
});
私はこれを持っています:
$.when(
file2store('resources/states_obj.txt?v=2', 'states'),
file2store('resources/lgas_obj.txt?v=2', 'lgas'),
file2store('resources/villages_obj.txt?v=2', 'villages'),
file2store('resources/staff_obj.txt?v=2', 'staff')
).done(function(){
console.log('All data put');
});
function file2store(url, store_name){
$.getJSON(url, function(obj){
db.put(store_name, obj).then(
function(ids) {
console.log(store_name+': '+ids.length + ' items put.');
}, function(e) {
throw e;
}
);
});
}
ajax コールバックの変数db
は、indexedDB Storage オブジェクトのグローバル変数であり、スクリプトの先頭で取得されます (ここには示されていません)。
Deferred
これは jQueryコンストラクトの正しい使用法ですか?関数呼び出し
file2store
はキューに入れられますか? つまり、次の呼び出しが開始される前に 1 つの呼び出しが終了することを確認しますか?