最初の実行で異なるパフォーマンスを示すPhonegapアプリケーションを作成しています。私が最初の実行を検出する方法は、データベーステーブルの1つが存在することを確認することです。以下のコードからわかるように、(おそらく)テーブルがすでに存在することを示すエラーをチェックしているので、これがアプリケーションの最初の実行ではないことを証明しています。
function databaseExists(){
var exists;
database.transaction(function(tx){
tx.executeSql('CREATE TABLE GLOBAL (uid, property, value)');
}, function(err){
exists = true;
}, function(){
exists = false;
});
return exists;
}
ただし、私の問題は、Javascriptコードの非同期実行は、成功(またはエラー)関数が値を設定する前に関数がその値を返すことを意味することです。
この関数は、アプリケーションの初期化段階で呼び出されます。
if (databaseExists()){
// Do Something
}
したがって、トランザクションの成功コールバックで関数を実行するのではなく、値を返す必要があります。
データベーストランザクションが完了するまで実行を強制的に待機させる方法、またはdatabase.transactionオブジェクトを介して値を返す方法はありますか?
よろしくお願いします、ジョン