可观察到的不调用oncomplete(sqlbrite -maptooneordefault)



我有从sqlbrite db中进行选择,但由于某种原因,可观察到的可观察到oncomplete。

我的代码:

fun BriteDatabase.selectDayTimelineRecord(dayTimestamp: Long) =
createQuery(table_timeline, selectWDayRecords(dayTimestamp)).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
        .mapToOneOrDefault(StatItem(dayTimestamp, 0)) { cursor -> cursor.mapTimelineStat() }

然后我尝试变体:

  1. 工作,但我需要保留订单,以便我不能使用flatmap

    可观察的fromiterable(0..6)。 db.SelectdayTimeLinerEcords(Timestampofdayinweek(IT))} .buffer(7).subscribeon(schedulers.io())。observeon(androidschedulers.mainthread())。订阅{}

  2. 不工作(不交付结果,但我不知道为什么)

    observable.fromiterable(0..6).concatmap { db.SelectdayTimeLinerEcords(Timestampofdayinweek(IT))} .buffer(7).subscribeon(schedulers.io())。observeon(androidschedulers.mainthread())。订阅{}

结果,我希望可以观察到t ...

的列表

有人知道我在做什么错?

我对sqlbrite并不熟悉,但是createQuery应该继续通知数据库更改。如果您只想获得一次值,则可以使用take()操作员。

fun BriteDatabase.selectDayTimelineRecord(dayTimestamp: Long) =
    createQuery(table_timeline, selectWDayRecords(dayTimestamp))
        .mapToOneOrDefault(StatItem(dayTimestamp, 0)) { cursor -> cursor.mapTimelineStat() }
        .take(1)

然后您的concatMap实现将起作用。

相关内容

  • 没有找到相关文章

最新更新