我正在尝试编写支持树数据的Sencha Touch 2.0 WebSql代理。我从tomalex0的WebSql / Sqlite代理开始。 https://github.com/tomalex0
修改脚本时遇到了一个奇怪的调试问题:
(我使用的是Chrome 17.0.963.78 m)
以下剪辑刚跳过来。交易永远不会发生!但是当我在上面或下面设置断点并在控制台中运行相同的代码时,它确实有用!
dbConn.transaction(function(tx){
console.log(tx);
if (typeof callback == 'function') {
callback.call(scope || me, results, me);
}
tx.executeSql(sql, params, successcallback, errorcallback);
});
您可以看到蓝色日志,绿色日志来自成功处理程序。当执行查询时,上面会有完全相同的日志(它是一个SELECT * FROM ...;因此,当执行多次而不更改数据时,我会期望相同的结果)
我发现当我将代码块添加到watch表达式时,它也会运行。
答案 0 :(得分:1)
它没有被跳过。它正在被调度,但由于请求的异步性质,直到很久才被执行:
http://ejohn.org/blog/how-javascript-timers-work/
由于代码正在同步执行以进行异步调用,因此,由于javascript的单线程性,它将延迟调用,直到执行同步代码为止。