JavaScriptの関数の実行順序について質問があります。
テーブル構造
・T_USERテーブル
no INTEGER AUTOINCREMENT,
name TEXT
・T_JOBテーブル
no INTEGER,
job TEXT
lang
1 function insertData(name, job){ 2 3 var currentNo = 0; 4 db.transaction( 5 function(tr){ 6 //①T_USERにデータを挿入 7 tr.executeSql( 8 "INSERT INTO T_USER VALUES (null, ?);", 9 [name], 10 function(rt,rs){console.log("INSERT SUCESS");}, 11 function(code,msg){console.log(mgs.message);} 12 ); 13 //②T_JOB用のnoを取得 14 tr.executeSql( 15 "SELECT max(no) AS current FROM T_USER;", 16 [], 17 function(rt,rs){ 18 console.log("SELECT SUCESS"); 19 //③noを変数にセット 20 currentNo = rs.rows.item(0).current; 21 }, 22 function(code,msg){console.log(mgs.message);} 23 ); 24 //④T_JOBにデータを挿入 25 tr.executeSql( 26 "INSERT INTO T_JOB VALUES (?, ?);", 27 [currentNo, job], 28 function(rt,rs){console.log("INSERT SUCESS");}, 29 function(code,msg){console.log(mgs.message);} 30 ); 31 } 32 );//db.transaction 33 }
以上を実行した場合、③でcurrentNoが取得される前に④が実行されてしまい、正常にデータを挿入することが出来ません。
一つのSQLが実行されてから次のSQLを実行するようにしたいのですが、どうすればよいでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。