Javascript HTML5数据库-事务与executeSql回调顺序
谈到HTML5数据库(sqlite),我最近使用了来自Javascript HTML5数据库-事务与executeSql回调顺序,javascript,html,callback,Javascript,Html,Callback,谈到HTML5数据库(sqlite),我最近使用了来自transaction和executeSql函数的成功/错误回调。我发现对于这两个函数,成功/错误回调顺序是相反的,例如: 交易 database.transaction(function(tx){ //--- do something }, function(){ //--- error handling }, function(){ //--- success handling }); 执行SQL tx.exec
transaction
和executeSql
函数的成功/错误回调。我发现对于这两个函数,成功/错误回调顺序是相反的,例如:
交易
database.transaction(function(tx){
//--- do something
}, function(){
//--- error handling
}, function(){
//--- success handling
});
执行SQL
tx.executeSql(sqlStatement, [], successCallback, errorCallback);
也许这不是一件很重要的事情,但我想知道这种颠倒顺序的原因。。IMHO,对每个函数使用相同的回调顺序是很有用的,这样当你学会如何使用一个函数时,你就知道其他函数是如何工作的了
提前感谢,问候我在这里指的是:
值得注意的是
此规范不再处于活动维护和Web中
应用程序工作组不打算进一步维护它
尽管如此,回到问题上来。
这背后的原因可能被掩盖了
我可以解释人们通常是如何构建API的
首先要注意的是,这两个函数的各种回调参数都是可选的,因此您希望将它们从使用最多的到使用最少的顺序排列。
如果你把它放在相反的顺序,你会强迫人们声明空函数
因此,在事务中,错误处理比成功处理更重要。
事务被“设计”为优雅地失败,这一点非常重要,因为我们期望它们不时失败并处理它们的失败
相反,查询应该返回其结果,而不会失败太多。
然而,当我们获得成功时,这应该经常发生,我们希望处理此类查询的结果,这是当您使用SQLStatementCallback callback
时,它不是SQLVoidCallback successCallback
。
此回调不是用于处理成功,而是用于显式处理语句结果(即,处理结果)
比较此处的和声明。您是否已经解决了这个问题或得到了答案?我也试图理解这一区别,因为我正在组装我的第一个sqlite接口。它不断地引起我的困惑,因为我会看到successCB和errorCB在两次调用之间颠倒。db.transaction是否像传统的“prepare”语句,而executeSql实际执行db调用?不,不幸的是,到目前为止没有答案(我可能会在不知道背后原因的情况下死去:)