重複の可能性:
javascript: function() { } 内で現在の for ループ カウンター値を使用していますか?
以下のコードを実行すると、2 番目のコンソール ログ出力は、最初のコンソール ログ出力の最後の行を繰り返すだけです。
これは、ネストされたすべてのクエリ 2 が、他のすべてが完了した後に実行するためにキューに入れられているためです。また、関数内に関数があるため、これは「クロージャー」を作成します。これは、ネストされたクエリ 2 の変数セットが 1 つしかないことを意味し、使用されるのはこれらの最終状態であるため、最後のクエリ 1 の結果のみが表示されます。クエリ 2 で繰り返し使用されます。少なくとも、これが起こっていると思います。問題は、全体が順番に機能するように変更するにはどうすればよいかということです。
ありがとう!
db.transaction(function(tx){
// Query 1
tx.executeSql("SELECT * FROM Products GROUP BY ssrt55", [], function(tx, listResults){
for (var i = 0; i < listResults.rows.length; i++) {
var lineData = listResults.rows.item(i);
var productDescriptionSQL = "select * from ProductDescriptions where bsrt56 = " + lineData['SSRT55'];
console.log(productDescriptionSQL);
// Query 2
tx.executeSql(productDescriptionSQL, [], function(tx, descriptionResults){
console.log(productDescriptionSQL);
}, onError);
}
}, onError);
});
First console log output select * from ProductDescriptions where bsrt56 = 1.00 select * from ProductDescriptions where bsrt56 = 2.00 select * from ProductDescriptions where bsrt56 = 2.50 select * from ProductDescriptions where bsrt56 = 3.00 select * from ProductDescriptions where bsrt56 = 4.00 Second console log output select * from ProductDescriptions where bsrt56 = 4.00 select * from ProductDescriptions where bsrt56 = 4.00 select * from ProductDescriptions where bsrt56 = 4.00 select * from ProductDescriptions where bsrt56 = 4.00 select * from ProductDescriptions where bsrt56 = 4.00