数据库之前的页面 - phonegap

时间:2014-01-28 10:10:53

标签: cordova web-sql

我有一个页面必须显示来自websql数据库的信息。 但是,即使信息在数据库中,页面也会加载空白。我猜测在数据库打开/活动之前页面是否已填充? 有什么办法可以减慢页面加载速度或加快数据库负载吗?

1 个答案:

答案 0 :(得分:1)

我正在努力解决同样的问题。下面是示例数据库服务功能代码。

发生这种情况的原因是因为web-sql调用是异步的。例如,getItemData在mapItemRow将结果集转换为所需的对象类型之前返回itemData。

getItemData:function(){
            var itemData= [];
            _dbCon.transaction(function (tx) {
            var queryExp = 'SELECT description as Item, amount as Amount from inventory';
                tx.executeSql(queryExp, [],mapItemRow);
            }, dbConnectionFactory.errorDBSql, dbConnectionFactory.successDBSql);

            function mapItemRow(tx, results) {
                console.log('Calling mapItemRow....')
                var len = results.rows.length;
                for (i = 0; i < len; i++) {
                    itemData.push({ITEM: results.rows.item(i).description, Amount: results.rows.item(i).amount});
                }
                return itemData;
            };
        }

我也在使用angularJs来解决这个问题,我使用了$ q和promise功能。如果您有兴趣了解解决方案,请与我们联系。

在您的情况下,您可以使用settimeout功能:

var millisecondsToWait = 500;
setTimeout(function() {
    // call your db service
}, millisecondsToWait);

您还可以实现以下链接中提到的waitfor等解决方案: Wait until a condition is true?

您还可以考虑使用其他一些可以处理这些异步调用的数据库,例如jaydata或breeze。

希望这会对你有所帮助。