WebSQL 中的变量范围
Scope of variable in WebSQL
我有这个功能
const _getCountriesByContinentCode = continent_code => {
const someDb = SQLite.openDatabase(db);
let foo = [];
someDb.transaction(tx => {
tx.executeSql("SOME SQL", [], (tx, results) => {
for (let i = 0; i < results.rows.length; i++) {
foo.push((results.rows.item(i)));
}
console.log('####', foo) // this logs the result as expected
});
});
console.log('****', foo) // this does not log the pushed result, but an empty array
}
console.log('####', foo)
按预期记录 foo.push(...)
的结果。但是,console.log('****', foo)
记录了一个空数组。
这是为什么? someDb.transaction(...
是异步的吗?
确实,正如@Bergi 在 Q 下方的评论中所建议的那样:SQL.transaction
和 SQL.executeSql
都是异步的。
我有这个功能
const _getCountriesByContinentCode = continent_code => {
const someDb = SQLite.openDatabase(db);
let foo = [];
someDb.transaction(tx => {
tx.executeSql("SOME SQL", [], (tx, results) => {
for (let i = 0; i < results.rows.length; i++) {
foo.push((results.rows.item(i)));
}
console.log('####', foo) // this logs the result as expected
});
});
console.log('****', foo) // this does not log the pushed result, but an empty array
}
console.log('####', foo)
按预期记录 foo.push(...)
的结果。但是,console.log('****', foo)
记录了一个空数组。
这是为什么? someDb.transaction(...
是异步的吗?
确实,正如@Bergi 在 Q 下方的评论中所建议的那样:SQL.transaction
和 SQL.executeSql
都是异步的。