javascript - SQL 语句是否通过 PhoneGap 的 Web SQL 数据库按顺序执行?

标签 javascript android cordova web-sql sequential

PhoneGap Web SQL 数据库文档位于 http://docs.phonegap.com/en/3.1.0/cordova_storage_storage.md.html#SQLTransaction列出以下 JavaScript 代码 fragment :

function populateDB(tx) {
    tx.executeSql('DROP TABLE IF EXISTS DEMO');
    tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
    tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

我能否保证上述代码 fragment 中的四个 SQL 语句将按顺序执行(即,DROP TABLE 命令肯定会首先执行,然后是 CREATE TABLE 语句,等等)?有很多关于 PhoneGap Web SQL 数据库 API 的异步性质的帖子,但我找不到任何关于 PhoneGap Web SQL 数据库 API 的顺序性质的帖子。正如您可能想象的那样,如果 DROP TABLE 语句没有首先完成执行,则执行 CREATE TABLE 语句没有任何意义。

最佳答案

不幸的是,这并不能保证。 Websql 规范没有规定请求必须按照其放置的顺序执行,而 IndexedDB API 却规定了。但大多数实现都尊重请求顺序,但很少有不这样做的。

正确的方法是监听请求成功回调并使用回调中的 tx 来保证顺序执行。

关于javascript - SQL 语句是否通过 PhoneGap 的 Web SQL 数据库按顺序执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20198212/

相关文章:

javascript - stubbing process.exit 开 Jest

javascript - 有时它说密码无效,而实际上它是有效的

android - 如何使 ViewPager 的项目在方向改变时被销毁?

android - 我可以在 Sony Xperia Play 上开发 Android 应用程序吗?

ios - cordova iOS通知在前台不起作用

javascript - JQuery 和 ASP MVC 双击错误

javascript - 模态变暗背景

android - Android 中自定义 ListView 上的 Toast 消息单击

sencha touch 2 和 phonegap 的 Paypal

cordova - phonegap设置 Assets 文件的根目录