【问题标题】:RxJava return JsonArray from Observable<JsonArray>RxJava 从 Observable<JsonArray> 返回 JsonArray
【发布时间】:2018-02-01 00:48:13
【问题描述】:

我对函数式编程和反应式 RxJava 还很陌生。我想从数据库中获取设备的 ID 和名称并将其存储在 Map 中,我正在以 RxJava 风格进行操作。我正在调用一个不需要返回任何内容的函数

.doOnNext(t -> updateAssetNameMap())

然后函数看起来像;

    private void updateDeviceNameMap() {
    LOGGER.debug("Reading device name and id from database");
    Observable<SQLConnection> jdbcConnection = createJdbcConnection();
    Scheduler defaultScheduler = RxHelper.scheduler(vertx);
    Observable<JsonArray> res =  jdbcConnection  //need to return JsonArray
            .flatMap(connection -> just(connection)
                    .flatMap(j -> runQuery(connection, "SELECT name,id FROM device")
                                .observeOn(defaultScheduler)
                                .doOnNext(m -> LOGGER.info("size: " + m.size()))
                                .flatMap(job -> { LOGGER.info(">>" + job.getJsonArray(0));
                                         //or if I can extract JsonArray items here, 
                                         //I can update my Map here too.
                                                  return just(job.getJsonArray(0));
                                                }
                                       )
            .doOnError(e -> { LOGGER.error("failed to connect to db", e);
                        connection.close(); })
            .doOnCompleted(connection::close)
            .onErrorReturn(e -> null));

    //System.out.println("" + res.map(d -> LOGGER.info(d.toString())));
    //get the JsonArray and update the deviceNameMap

与数据库的连接成功,查询也正确完成。 我可以通过Observable.from(ObjectName) 将任何对象转换为 Observable,但不能相反。在.flatMap(job -&gt; just(job.getJsonArray(0)) 之后需要进行适当的映射,但我不知道如何。运行 Verticle 后,我什至看不到从行 .flatMap(job -&gt; { LOGGER.info("&gt;&gt;" + job.getJsonArray(0)); 记录的任何内容。 我错过了什么吗?

【问题讨论】:

    标签: java rx-java observable vert.x reactivex


    【解决方案1】:

    您必须订阅您的Observable&lt;JsonArray&gt;,否则不会发生任何事情。

    【讨论】:

      猜你喜欢
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-21
      • 2019-10-20
      • 1970-01-01
      • 2017-03-09
      • 2014-01-11
      相关资源
      最近更新 更多