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.transactionSQL.executeSql 都是异步的。