2

我创建了一个函数 myFunction,它执行简单的任务,即从 sqlite 数据库中检索数据并将其保存在一个易于使用的数组中。此功能应遵循这些步骤来实现我的功能。

  1. 从数据库中检索数据。
  2. 将其保存到数组中。
  3. 返回数组

但它是按此顺序执行这些步骤的;3、1、2,所以我没有得到数据,因为它没有得到它就返回。

例如

function myFunction() {
    var ret;
    var arr = [];

    db.transaction(function (trans) {
        trans.executeSql('SELECT * FROM tblname', [],
            function (transaction, result) {
                if (result != null && result.rows != null) {
                    for (var i = 0; i < result.rows.length; i++) {
                        var row = result.rows.item(i);
                        ret = row.urlcolmn;
                        arr.push(ret);

                        alert('alert 1'); // just to check which line(alert) is called first
                    }
                }
            }, errorHandler);
    }, errorHandler, nullHandler);

    alert('alert 2'); // just to check which line(alert) is called first

    return arr;
}

在上面的代码中,警报 2 显示在警报 1 之前.....这就是它不在数组中返回值的原因。这个问题可能是因为 JS 中的 sqlite 是异步的。

4

0 回答 0