【问题标题】:Html5 WebSql transaction behaves strangely with alertHtml5 WebSql 事务在警报中表现异常
【发布时间】:2015-09-12 23:13:28
【问题描述】:

当我在代码中添加一些警报时,WebSql 的事务表现异常。我有三笔交易要做。它们是 t1、t2 和 t3。

以下代码可以正常工作。

 var db = openDatabase('DBTest', "1.0", "Example DB", "200000");
    db.transaction(function(tx) {
        alert('Tranasction.1........');
        jQuery('body').append('<h1>Added a h1 by t1</h1>');
    });
    db.transaction(function(tx) {
        alert('Tranasction.2........');
        jQuery('body').append('<h1>Added a h1 by t2</h1>');
    });
    db.transaction(function(tx) {
        alert('Transaction.3.........');
        jQuery('body').append('<h1>Added a h1 by t3</h1>');
    });

但是,当我在进行交易之前插入警告语句时。事情没有按预期工作。

例如。如果我发出警报('在事务 t3 之前发出警报');

修改后的代码如下:

var db = openDatabase('DBTest', "1.0", "Example DB", "200000");
    db.transaction(function(tx) {
        alert('Tranasction.1........');
        jQuery('body').append('<h1>Added a h1 by t1</h1>');
    });
    db.transaction(function(tx) {
        alert('Tranasction.2........');
        jQuery('body').append('<h1>Added a h1 by t2</h1>');
    });
    //THIS ALERT IS ADDED
    alert('An alert just before transaction t3');
    db.transaction(function(tx) {
        alert('Transaction.3.........');
        jQuery('body').append('<h1>Added a h1 by t3</h1>');
    });

更改后的行为变化: 前两个事务不会发生。

这是预期的行为。如果是,那它的合理性如何?

【问题讨论】:

  • 我有类似的问题。你知道是什么问题吗?
  • 我没有确切的解释,但是用 console.log 替换 alert 解决了这个问题..
  • 我也遇到了警报问题。
  • 我也有这个问题。使用 chrome 进行测试时插入不会一直工作,我删除了警报,现在它似乎工作了。有人知道为什么吗?

标签: javascript html transactions local-storage web-sql


【解决方案1】:

您在此处的代码在 Chrome 中按预期工作。我刚刚打开开发者工具,把你的代码粘贴到控制台,可以看到三个事务都创建好了。

请记住,db.transaction 函数调用是异步的,因此它们会立即返回,但不一定会调用您传入的回调,直到它们实际创建事务。

这是我认为正在发生的执行顺序:

openDatabase(...)

db.transaction #1(开始创建事务,立即返回)

db.transaction #2(开始...)

在事务 3 之前显示警报

db.transaction #3(开始...)

db.transaction #1 回调(警报事务 1)

db.transaction #2 回调(警报事务 2)

db.transaction #3 回调(警报事务 3)

【讨论】:

    猜你喜欢
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 2020-05-30
    相关资源
    最近更新 更多