9

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

交易

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

执行Sql

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

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

提前致谢,问候

4

1 回答 1

1

我在这里指的是[主 RFC 文档]:值得注意的是

该规范不再处于积极维护中,Web 应用程序工作组也不打算进一步维护它。

尽管如此,回到问题。这背后的原因可能隐藏在讨论邮件列表的档案中

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

首先要注意的是,这两个函数的各种回调参数都是可选的,因此您需要将它们从最常用到最不常用的顺序排列。如果你把它放在相反的顺序,你会强迫人们声明空函数。

因此,在事务中,错误处理比成功处理更重要。事务被“设计”为优雅地失败,并且非常重要,因为我们希望它们不时失败并处理它们的失败。

相反,查询应该返回它的结果,而不会失败太多。虽然,当我们成功时,并且这应该经常发生,我们想要处理此类查询的结果,这就是当您使用SQLStatementCallback callbackwhich is not a时SQLVoidCallback successCallback。这个回调不是为了处理成功,而是为了显式处理语句结果(即处理结果)。

比较这里的transactionexecuteSql声明。

于 2016-04-12T14:30:17.133 回答