ctripcorp / SQLlin

A DSL ORM library for Kotlin Multiplatform.
Apache License 2.0
219 stars 11 forks source link

Hi 想问一下是否考虑增加异步的 API 接口? #98

Closed wkmcyz closed 2 weeks ago

wkmcyz commented 2 weeks ago

目前的操作都是同步的,这对于上层开发来说很好。 但是有的平台(例如一些 js 运行时,就没有同步操作数据库的 API),所以要在这些平台上兼容的话,就可能需要修改 API。

但是这样会破坏原有的用法,毕竟同步代码写起来、维护起来都更加容易。

qiaoyuang commented 2 weeks ago

目前 SQLlin 不支持 Kotlin/JS 平台,在不讨论 Kotlin/JS 的前提下,由于 Kotlin/JVM 及 Kotlin/Native 都可以使用多核能力,因此当下的设计已经满足需求。用户可以运用 Kotlin coroutines 自由的管理数据库任务的调度(可以将任务自由的运行在自定义的 dispatcher 内)。此外,1.2.2 版本中新增了 suspendScope 函数,可以保证在多核环境下共享共一个数据库连接的并发安全。

如果未来考虑 Kotlin/JS 平台的话,异步 API 确实是有必要的,底层的设计会基于当下 SQLite 在 JS 平台上的生态环境。