私は次のコードを持っています:
displayOrders: function(){
function getRetailerName(retailerID, callback){
var retailerName;
db.transaction(function(qry){
qry.executeSql("SELECT retailerName FROM retailers WHERE token = '"+retailerID+"' ", [], function(tx, results1){
var len1 = results1.rows.length;
var retailerName;
for (var i1=0; i1<len1; i1++){
retailerName = results1.rows.item(i1).retailerName;
callback(retailerName);
}
});
});
}
db.transaction(function(qry){
qry.executeSql("SELECT * FROM orders", [], function(tx, results){
//query was a success
var len = results.rows.length;
for (var i=0; i<len; i++){
var orderTime = results.rows.item(i).orderTime;
var retailerName;
getRetailerName(results.rows.item(i).retailerID,function(name) { //this uses a callback function... need to because request to DB is a
retailerName = name ;
$('#orderHistoryCollapsible').append('<div data-role="collapsible" data-collapsed="false"><h3>'+retailerName+' - '+orderTime+'</h3><p>Im the collapsible set content for section 1.</p></div>');
$(".orderHistoryCollapsible").collapsibleset();
$(".orderHistoryCollapsible").collapsibleset('refresh');
});
}
});
});
したがって、基本的に、コードは2つの別々のデータベースクエリを実行し、リストビューに配置されるデータを取得します。getRetailerName関数は、以下のクエリで使用されるコールバックを提供します。このコールバックは、両方のデータセットを「orderHistoryCollapsible」divに追加します。
私の問題は、DOMに挿入されることも意図されているorderTime値が、毎回ループの最後の値を返すことです。まるで両方のクエリをコールバックとして提供する必要があるかのように?しかし、データを適切な場所に追加する方法がわかりません。
どんな助けでもいただければ幸いです