Javascript 如何使用异步数据库

Javascript 如何使用异步数据库,javascript,html,Javascript,Html,我有: for(var i=0;i使用匿名函数捕获变量: for (var i=0;i<2;i++) { dbo.transaction( function(myTrans) { myTrans.executeSql( 'UPDATE myTable SET myField=0 WHERE myID=?' ,[i] ) } ) }

我有:


for(var i=0;i使用匿名函数捕获变量:

for (var i=0;i<2;i++) {
    dbo.transaction(
        function(myTrans) {
            myTrans.executeSql(
                'UPDATE myTable SET myField=0 WHERE myID=?'
                ,[i]
            )
        }
    )
}

for(var i=0;i使用匿名函数捕获变量:

for (var i=0;i<2;i++) {
    dbo.transaction(
        function(myTrans) {
            myTrans.executeSql(
                'UPDATE myTable SET myField=0 WHERE myID=?'
                ,[i]
            )
        }
    )
}

for(var i=0;i关于bug是什么,您可能是对的。解决方法是在循环内部封装一个匿名函数,其中包含一个新的、不变的
i
变量,供封闭的代码查看

for (var i=0;i<2;i++) {
    (function(i){
        dbo.transaction(
            function(myTrans) {
                myTrans.executeSql(
                    'UPDATE myTable SET myField=0 WHERE myID=?'
                    ,[i]
                )
            }
        )
    }(i));
}

甚至可以将
var i
替换为
let i
,但据我所知,在这一点上还没有达成一致意见。

关于bug是什么,您可能是对的。解决方法是在循环内部封装一个匿名函数,其中包含一个新的、不变的
i
变量b请参阅随附的代码

for (var i=0;i<2;i++) {
    (function(i){
        dbo.transaction(
            function(myTrans) {
                myTrans.executeSql(
                    'UPDATE myTable SET myField=0 WHERE myID=?'
                    ,[i]
                )
            }
        )
    }(i));
}

甚至可以将
var i
替换为
let i
,但据我所知,在这一点上尚未达成共识。

“let(i=i)”“哦,是的,那就更干净了。”CF.菲利普森:“我已经编辑了这个帖子,提到可以用<代码>替换<代码> var >代码>让不做其他更改。我认为我们可以同意这是更干净的。这不是最好的例子。我的讽刺是为了ES:Harmony,不是为了你的解释和代码示例。事实上,你的代码非常干净。我只是在一般情况下很难使用JavaScript。“let(I=I)”“哦,是的,那就更干净了。”CF.菲利普森:“我已经编辑了这个帖子,提到可以用<代码>替换<代码> var >代码>让不做其他更改。我认为我们可以同意这是更干净的。这不是最好的例子。我的讽刺是为了ES:Harmony,不是为了你的解释和代码示例。事实上,你的代码非常干净。我只是在一般情况下很难使用JavaScript。