谈到HTML5数据库(sqlite),我最近使用了来自transaction
和executeSql
函数的成功/错误回调。我发现对于这两个函数,成功/错误回调顺序是相反的,例如:
交易
database.transaction(function(tx){
//--- do something
}, function(){
//--- error handling
}, function(){
//--- success handling
});
的ExecuteSQL
tx.executeSql(sqlStatement, [], successCallback, errorCallback);
可能知道这不是一件重要的事情,但我想知道是否存在这种颠倒顺序的原因..恕我直言,为每个函数设置相同的回调顺序会很有用,所以当你学会了使用一个,你知道所有其他人的工作方式!
提前致谢,问候
答案 0 :(得分:1)
我在这里指的是 [the main RFC document]: 值得注意的是
此规范不再处于活动维护和Web中 应用工作组无意进一步维护它。
尽管如此,回到这个问题。 这背后的原因可能是in the archives of the discussion mailing lists
我可以推断人们通常如何构建API。
首先要注意的是两个函数的各种回调参数都是可选的,因此您需要从最常用到最少使用它们进行排序。 如果你按相反的顺序放置它,你就强迫人们声明空函数。
因此,在事务中,错误处理比成功处理更重要。 交易是"设计"优雅失败,极其重要,因为我们期望他们不时失败并处理他们的失败。
相反,查询应返回其结果,而不会失败太多。
虽然,当我们取得成功时,这应该经常发生,我们希望处理此类查询的结果,这是当您使用SQLStatementCallback callback
而不是SQLVoidCallback successCallback
时。
此回调不是为了处理成功,而是为了显式处理语句结果(即处理结果)。
在此处比较transaction
和executeSql
声明。