sqlite 从 javascript 读取await

问题描述 投票:0回答:2

我正在尝试使用[此处][1]使用

fetch
命令显示的 sql.js 示例从 javascript 读取 sqlite 数据库。然而,当遵循示例并根据我的需要进行调整时,我遇到了错误:

Uncaught SyntaxError: await is only valid in async functions and async generators

这是代码:

<head>
    <script src='https://cdn.plot.ly/plotly-latest.min.js'></script>
    <script src='sql-wasm.js'></script>
    <meta charset="utf8" />
</head>

<body>
    <div id='myDiv'></div>
    <script>
        const sqlPromise = initSqlJs({
          locateFile: file => `https://sql.js.org/dist/${file}`
        });
        const dataPromise = fetch("https://raw.githubusercontent.com/db.db").then(res => res.arrayBuffer());
        console.log(dataPromise)
        const [SQL, buf] = await Promise.all([sqlPromise, dataPromise])
        const db = new SQL.Database(new Uint8Array(buf));
        console.log(db)
    
    </script>
</body>

我理解这个错误,但是

fetch
initSqlJs
都是
async
所以这让我很困惑。 任何帮助表示赞赏。 [1]: https://sql.js.org/#/?id=using-fetch

javascript sqlite
2个回答
2
投票

该错误基本上是说您需要在异步函数中才能使用

await
- 尚不支持顶级
await

将代码包装在异步函数中,然后调用:

<script>
async function main() {
  const sqlPromise = initSqlJs({
    locateFile: (file) => `https://sql.js.org/dist/${file}`,
  });
  const dataPromise = fetch(
    "https://raw.githubusercontent.com/db.db",
  ).then((res) => res.arrayBuffer());
  console.log(dataPromise);
  const [SQL, buf] = await Promise.all([sqlPromise, dataPromise]);
  const db = new SQL.Database(new Uint8Array(buf));
  console.log(db);
}
main();
</script>

0
投票

这个人给出了第一个对我来说真正有效的答案,我花了整个早上尝试了五种不同的方法。

© www.soinside.com 2019 - 2024. All rights reserved.