我有一个页面必须显示来自websql数据库的信息。 但是,即使信息在数据库中,页面也会加载空白。我猜测在数据库打开/活动之前页面是否已填充? 有什么办法可以减慢页面加载速度或加快数据库负载吗?
答案 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。
希望这会对你有所帮助。