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