首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Html5 WebSql事务行为异常,并发出警报。

Html5 WebSql事务行为异常,并发出警报。
EN

Stack Overflow用户
提问于 2011-06-23 06:02:27
回答 1查看 526关注 0票数 1

当我在代码中添加一些警报时,WebSql的事务表现得很奇怪。我有三笔交易要做。这些是t1,t2和t3。

下面的代码运行得非常好,正如预期的那样。

代码语言:javascript
复制
 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之前’);

更改后的代码如下所示:

代码语言:javascript
复制
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>');
    });

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

是预期的行为吗。如果是的话,那又有什么理由呢?

EN

回答 1

Stack Overflow用户

发布于 2012-04-12 04:10:45

在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)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6449936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档