私の ASP.NET Web フォーム アプリケーションでは、いくつかの JQuery 操作を実行してフォーム データを収集し、フォーム データを繰り返し処理して SQLite データベースに保存し、正常に完了したら現在のウィンドウを閉じる必要があります。ウィンドウが開いたままの場合、保存操作は完全に機能しますが、window.close を SQLite トランザクションの成功コールバックに追加するとすぐに、保存操作が完了する前にウィンドウが閉じているように見えます。
function save(closeWindow)
{
//Gathering form data and creating the checkListInsert string containing my bulk insert statement (i.e. Insert Into Table Select .... Union Select...)
db.transaction(function (tx) {
tx.executeSql(checkListInsert.substring(0, checkListInsert.length - 6), [], function (tx, result) {
if (closeWindow == "Yes") {
//window.close(); If left uncommented the data will not save. When left commented the save occurs but of course the window is still open
}
}, onSQLError);
});
}
編集: window.close() を window.setTimeout() 内に 1 秒間配置すると、すべて正常に動作します。したがって、それは間違いなくタイミングの問題です。トランザクションが完了するまでコールバックが起動しないように見えますか?!