1

まず、私の英語で申し訳ありません...

ばかげているかもしれませんが、次の質問があります。

私は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 はサポートされていません。

したがって、どんな提案も大歓迎です。

前もって感謝します。

4

0 に答える 0