Javascript HTML5数据库-事务与executeSql回调顺序

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

谈到HTML5数据库(sqlite),我最近使用了来自
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调用?不,不幸的是,到目前为止没有答案(我可能会在不知道背后原因的情况下死去:)