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

时间:2013-06-24 07:44:09

标签: javascript html5 callback

谈到HTML5数据库(sqlite),我最近使用了来自transactionexecuteSql函数的成功/错误回调。我发现对于这两个函数,成功/错误回调顺序是相反的,例如:

交易

database.transaction(function(tx){
    //--- do something
}, function(){
    //--- error handling
}, function(){
    //--- success handling
});

的ExecuteSQL

tx.executeSql(sqlStatement, [], successCallback, errorCallback);

可能知道这不是一件重要的事情,但我想知道是否存在这种颠倒顺序的原因..恕我直言,为每个函数设置相同的回调顺序会很有用,所以当你学会了使用一个,你知道所有其他人的工作方式!

提前致谢,问候

1 个答案:

答案 0 :(得分:1)

我在这里指的是 [the main RFC document]: 值得注意的是

  

此规范不再处于活动维护和Web中   应用工作组无意进一步维护它。

尽管如此,回到这个问题。 这背后的原因可能是in the archives of the discussion mailing lists

我可以推断人们通常如何构建API。

首先要注意的是两个函数的各种回调参数都是可选的,因此您需要从最常用到最少使用它们进行排序。 如果你按相反的顺序放置它,你就强迫人们声明空函数。

因此,在事务中,错误处理比成功处理更重要。 交易是"设计"优雅失败,极其重要,因为我们期望他们不时失败并处理他们的失败。

相反,查询应返回其结果,而不会失败太多。 虽然,当我们取得成功时,这应该经常发生,我们希望处理此类查询的结果,这是当您使用SQLStatementCallback callback而不是SQLVoidCallback successCallback时。 此回调不是为了处理成功,而是为了显式处理语句结果(即处理结果)。

在此处比较transactionexecuteSql声明。