【发布时间】:2012-05-16 09:05:58
【问题描述】:
我需要获取数据库中的所有表,然后将它们一一删除。但是每个DROP TABLE 都是异步的。 最重要的是返回的 Promise 只有在所有表都被删除后才能解决。
clear: function() {
var dfd = $.Deferred();
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, null, errorCallback);
}
};
execute(sql, args, dbTableNamesResult, dfd.reject);
return dfd;
},
Execute 接受四个参数,sql、arguments、successCallback 和 errorCallback。
【问题讨论】:
标签: jquery asynchronous jquery-deferred web-sql