小编chr*_*379的帖子

RxJava,只有在第一个为空时才执行observable

仅当具有相同电子邮件的用户不存在时,我才想将新用户插入到我的数据库中.

因此,我有两个Observable:第一个使用特定电子邮件发出用户或完成而不发出任何内容.第二个Observable插入一个新用户并返回这个新创建的用户的Object.

我的问题是,我不希望第一个Observable(如果存在)所传递的用户被传输到订阅服务器.相反,我想将它映射到null).

Observable<UserViewModel> observable = 
    checkAndReturnExistingUserObservable
        .map(existingUser -> null)
        .firstOrDefault(
            insertAndReturnNewUserObservable
                .map(insertedUser -> mMapper.map(insertedUser)
        )
Run Code Online (Sandbox Code Playgroud)

这是我尝试的最后一件事,但它在第二个地图操作员处说"循环推理".

总结一下.我想只在第一个完成空的情况下执行第二个Observable,但如果不是我不想首先返回数据,而不想返回null.

任何帮助都非常感谢.

java rx-java

6
推荐指数
1
解决办法
5900
查看次数

并行构建gradle多模块项目

我有一个这样的项目设置:

:root
  :common
  :module1
  :module2
  :module3
  :module4
  :app
Run Code Online (Sandbox Code Playgroud)

模块之间的依赖关系如下:

:common --> "none"
:module* --> :common
:app --> "all other modules"
Run Code Online (Sandbox Code Playgroud)

根构建 gradle 仅为某些插件(如 kotlin gradle 插件)定义构建脚本。插件的实际应用发生在模块 build.gradle 文件中。此外,由于所有模块仅对自身负责,因此不会发生配置注入。

我在 gradle.properties 中启用了 org.gradle.parallel 并运行./gradlew build

预期的执行顺序如下(省略不相关的任务):

:common:build
  :module1:build
  :module2:build
  :module3:build
  :module4:build
    :app:build
Run Code Online (Sandbox Code Playgroud)

但不幸的是我得到了:

:common:build
  :module1:build
    :module2:build
      :module3:build
        :module4:build
          :app:build 
Run Code Online (Sandbox Code Playgroud)

我可以做些什么来并行构建所有模块,因为最终会有更多模块,并且顺序执行将不必要地进一步延长所需的构建时间。

parallel-processing gradle build.gradle

5
推荐指数
0
解决办法
1768
查看次数