【问题标题】:sqlite synchronoussqlite 同步
【发布时间】:2013-03-16 08:18:10
【问题描述】:

我一直在使用 sqlite、phonegap、javascript,我需要从 sqlite db 中获取信息。

我能够获取我需要的所有信息、插入、更新等。

问题是 javascript 异步工作。也就是说,在从数据库获取所有必要信息之前,它正在处理所有其他后续语句。

我一直尝试使用回调,但我厌倦了它,因为使用循环有困难。 (不能在循环中使用 sqlite 查询,因为循环在当前 sqlquery 被处理之前被迭代,这不是我想要的)

是否可以同步进行这些数据库操作?

更新 从这里找到了一个新的解决方案:webkit executesql sentence and loop problem

【问题讨论】:

  • 查看caolan/async 以帮助您管理异步操作(例如在串行循环中执行异步操作)。
  • 你知道如何在循环中使用异步函数了吗?我目前正好有这个问题
  • @kim366 我最终做的是删除循环并将其全部更改为不优雅的函数调用。你可以试试 javascript 中的新 await 函数来帮助你:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 或者你可以阅读这篇文章:blog.lavrton.com/…
  • @VigneshT.V.是的,这就是我正在尝试做的。我切换到使用承诺的sqlite(来自sqlite3)。仍在努力让它发挥作用,但似乎很有希望;双关语不是故意的。
  • 终于成功了!使用await,你可以让异步的东西同步,而不用为这一切而头疼

标签: javascript android sqlite cordova


【解决方案1】:

没有,但是有一个库可以帮助...

http://html5sql.com/

我自己刚刚开始使用它,它允许您执行多个或单个 SQL 请求,带有 1 个回调。这可能正是您所需要的:)

【讨论】:

  • 感谢您的快速响应。您引用的库很好,但不允许在循环内以同步方式执行异步操作。因为,我在循环内进行查询,不建议使用回调。
  • 不能同步调用。如果它在循环中,那么您必须调用一个函数,该函数在每个执行回调中调用自身。
  • 哦..这就是我目前正在做的事情并问这个问题只是因为代码太长了..无论如何,谢谢很多..
  • 不用担心。它不是同步调用,但现在一切都是异步的,不是吗:)
【解决方案2】:

您可以使用Siminov Framework。它允许您对本机 SQLite 数据库进行同步/异步调用。它支持大多数混合框架,例如 (Cordova, React Native, Xamarin)

但是,如果您使用 JavaScript 构建混合应用程序,那么我建议您使用异步调用,因为它比同步调用具有性能优势。

【讨论】:

    猜你喜欢
    • 2012-12-16
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2014-08-25
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多