我有:
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/