我在使用两个函数时遇到问题,因为它们依赖于链接异步任务。这clearAll
是一个点击事件,它应该清空数据库然后重新加载页面。 Clear
是来自数据库模块 ( database.clear
) 的函数。
如果合适的话,我想使用 JQuery Promises/Deffered,但对于这个用例我不能完全掌握它们。
我已经按照@Larry K 的回答重写了代码
clearAll: function()
{
var refresh = function()
{
localStorage.clear();
sessionStorage.clear();
window.location.href = window.location.pathname;
console.log("feeling refreshed");
};
database.open();
//This is what I'd like to be able to do
//With Jquery or callbacks
$.when(database.clear()).then(refresh);
},
clear: function (callback, errorCallback)
{
var sql = "SELECT name FROM sqlite_master WHERE type='table' AND name != ?",
args = ["__WebKitDatabaseInfoTable__"];
var dbTableNamesResult = function (tx, result)
{
var dropSql = "";
for (var i = 0; i < result.rows.length; i++)
{
dropSql = "DROP TABLE IF EXISTS " + result.rows.item(i).name + "; ";
execute(dropSql);
}
};
execute(sql, args, dbTableNamesResult);
},