まず、私の英語で申し訳ありません...
ばかげているかもしれませんが、次の質問があります。
私はjqueryイベントコールを持っています...
$('#buttonX').click(function(){
function1();
alert(function2());
});
function1 と function2 には、Web SQL クエリを同期的に実行する Web Worker への呼び出しがあります。
function2()
{
var dbSync = new Worker('dbSync.js');
var result;
dbSync.postMessage();
dbSync.onmessage = function (oEvent) {
result = oEvent.data;
console.log("result: " + result);
return result;
};
}
コード dbSync.js:
var db = openDatabaseSync('mydb', '1.0', 'my database', 3 * 1024 * 1024);
self.onmessage = function(event) {
var numRecords;
db.transaction(function (tx) {
var results = tx.executeSql('SELECT * FROM foo ', []);
numRecords = results.rows.length;
self.postMessage(numRecords);
});
};
しかし、「buttonX」がクリックされると、最初に実行されるのはアラートです...その function1 と function2 が実行される前であっても。
Web Worker は常に非同期で実行されるためだと思いますが、すべてのプロセスを同期的に実行する方法はありますか?
...Web Worker なしでプロセスをテストしましたが、メソッド OpenDatabaseSync はサポートされていません。
したがって、どんな提案も大歓迎です。
前もって感謝します。