javascript - 如何使用异步数据库

标签 javascript html

我有:

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

因为这个函数是一个回调函数,它被调用时 i=2。 问:如何调用 i=0 和 i=1?

注意:我认为这就是正在发生的事情。我想我已经正确地陈述了问题(这是因为回调在循环完成后执行)。

最佳答案

使用匿名函数捕获变量:

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

关于javascript - 如何使用异步数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7745239/

相关文章:

javascript - HTML - 我无法在 Internet Explorer 中由 javascript 动态显示的某些文本框中写入

javascript - 单击链接后试图防止鼠标移出

javascript - 使用 ng-if 和 ng-repeat 添加 div

javascript - 如何停止使用 canvas imageData 进行 alpha 预乘?

javascript - window.open 不能正常工作

javascript - 如何设置 cookie 并基于 cookie 是否存在跳过登录屏幕?

html - Sinatra NoMethodError at/undefined 方法 `stylesheet_link_tag' #

javascript - JQuery 分割选择器

javascript - 如何使用云代码和 Shashido 在按钮单击时更改解析角色数组?

javascript - 将字符串放置在页面上