websql sqlstatementerrorcallback的返回值应该是什么?

时间:2019-07-18 08:07:44

标签: w3c web-sql

https://www.w3.org/TR/webdatabase/#sqlstatementerrorcallback

请参见此处,sql语句错误回调定义了返回类型boolean:

[Callback=FunctionOnly, NoInterfaceObject]
interface SQLStatementErrorCallback {
  boolean handleEvent(in SQLTransaction transaction, in SQLError error);
};

反对

[Callback=FunctionOnly, NoInterfaceObject]
interface SQLTransactionErrorCallback {
  void handleEvent(in SQLError error);
};

在任何地方都没有指定回调应该返回什么,以及为什么它是布尔值。

许多绑定,例如一个飞镖(https://api.dartlang.org/stable/2.4.0/dart-web_sql/SqlStatementErrorCallback.html)甚至将其定义为void(导致伪造?)

https://github.com/xpbrew/cordova-sqlite-storage/blob/dev/www/SQLitePlugin.js#L401如果不返回false,甚至会引发错误。

我确实意识到这是一个过时的规范,但是cordova选择此处符合规范,因此我需要确定如何解释它。

为什么语句错误回调为布尔值,而例如事务错误回调为void?在哪种情况下我应该实际返回什么?

1 个答案:

答案 0 :(得分:0)

我在这里找到了一个可能的答案:https://docs.kony.com

SQLStatementErrorCallback 返回一个布尔值。

  • true - 结束交易的执行。如果没有指定回调函数作为参数,则返回 true。 重要提示:返回 true 时,事务将回滚。
  • false - 继续执行交易。

这样您就可以决定是要继续还是回滚整个事务。

至于 SQLTransactionErrorCallback - 返回值没有可能的用途。