我正在研究它的术语,它比可观察的要简单,因为它只能有1个值。(即具有1个发射的可观测值)。以下内容也适用于其他类型(可观察、可流动、可完成)Single
Single.fromCallable
Single.fromCallable
实际上,从它调用的函数内的值创建一个新的 Single。这就是为什么亚伦何说是评论:
fromCallable是Observable.defer(() -> Observable.just(value)) 的一种方便方法。
它执行使用 创建可观察量的额外步骤。如果调用已创建 Single 的函数,则将获得嵌套的 Single。.just
fromCallable
// Not very useful to get a Single<Single<*>>
val fromCallable: Single<Single<String>> = Single.fromCallable {
Single.just("Example")
}
// Better in these cases, where the function inside doesn't create a Single already:
fun heavyFunction(): String { return "Heavy" }
val fromCallable2: Single<String> = Single.fromCallable {heavyFunction()}
Single.defer
Single.defer
调用其中的函数,如果它返回 Single,则可以稍后使用该 Single。如果没有,它将无法编译。
val defer: Single<String> = Single.defer {
Single.just("Example")
}
// This line won't compile:
Single.defer {heavyFunction()}
// You need to wrap it in a Single:
val defer2: Single<String> = Single.defer {Single.just(heavyFunction())}
因此,Single.fromCallable 从可调用创建一个 Single,因此得名。这个可调用的不必创建单个,它可以是任何东西。
Defer不会创建一个新的单曲,它只是调用它应该创建一个单身的身体。这就是为什么它的函数名称中没有的原因。from