WebSQL和Javascript操作顺序
WebSQL and Javascript Order of Operation
我的应用程序正在使用javascript webSQL,并且我对命令执行顺序有一些问题。无论我的代码在查询中的顺序如何,都会最后执行。例如,在以下代码中,2将在1之前被提醒:
db.transaction(
function (transaction) {
transaction.executeSql(
'SELECT * FROM contacts WHERE id = ?;',
[id],
function (transaction, result) {
alert("1");
if (result.rows.length != 0) {
user = result.rows.item(0).name;
} else {}
},
errorHandler);
});
alert("2");
message = id + '%1E' + name;
你知道为什么会这样吗?
您什么时候发出警报("2"),您还没有完成事务,所以您传递给它的第二个函数还没有被调用。由于我认为它是success
处理程序,所以它将在事务成功完成后被调用。第三个参数是查询失败时要执行的代码片段,仅当查询失败时执行。
当页面加载了足够的内容来执行javascript时,就会执行事件处理程序代码之外的任何内容。请注意,执行alert("2")
不需要加载整个页面,只需加载足够的JS即可。由于这些语句非常接近,在到达并执行警报("2")语句之前,事务完成的可能性基本为零。
但是,如果您在alert("2")
和db.transaction(…)之间有足够的代码,则回调可能会在alert(2)代码之前执行(在所谓的竞争条件中)。
在这种情况下,您需要小心使用事件处理程序,尽管这取决于成功处理程序的作用。如果它修改了页面DOM,那么我强烈建议将db.transaction()和周围的代码包装在绑定到页面加载的事件处理程序中。
这不是你问题的答案,但我想我应该给你一个关于webSQL的警告。
截至2010年11月18日,W3C已经宣布他们已经否决了Web SQL数据库推荐草案,并将不再维护它
因此,虽然它目前可能在浏览器中运行,但我不会在未来依赖它。
相关文章:
- 从表单中获取用户输入执行计算(操作顺序)并输出回该表单
- WebSQL和Javascript操作顺序
- JavaScript:令人惊讶的操作顺序
- 链接或分组多个 JavaScript 函数调用,其中操作顺序有时至关重要
- 硒,摩卡,mysql.Mysql 操作顺序
- 通用分析中用于设置自定义维度的操作顺序
- 单击链接时的 Javascript 操作顺序 - 链接启动或附加到 id 的侦听器触发
- Javascript中操作的执行顺序是否保证始终相同
- Javascript 操作顺序问题
- 数组表示法操作顺序
- 如何确保复杂画布操作的正确执行顺序
- Angular控制器中的操作顺序没有以正确的方式工作
- DOM操作未按顺序执行
- 按特定顺序执行Yeoman/nodejs操作
- Dynamics CRM功能区操作顺序
- 理解使用jquery递延的顺序异步操作链
- 使用延迟动态添加顺序操作
- MySQL, Node.js顺序操作-我如何做到这一点
- Flux中的顺序操作
- JSON补丁rfc6902:顺序操作和索引