📜  理解 RxJava Create 和 fromCallable 操作符

📅  最后修改于: 2022-05-13 01:54:24.327000             🧑  作者: Mango

理解 RxJava Create 和 fromCallable 操作符

在本文中,我们将了解RxJava Create 和 fromCallable 操作符。我们可以根据需要的技能集在所需的函数之间进行选择。我们在使用 RxJava 操作符时经常会犯错误。让我们直截了当,以免出错。

结合实例,我们将研究以下操作。

  • 创建
  • 从可调用

1.创建

应该创建 RxJava 操作符。

图 1. RxJava 操作符。

Build Operator:使用一个函数从头开始创建一个 Observable。

使用 Create Operator,我们可以做一项工作并不断地一个一个地发出值,直到操作完成。



让我们看一个例子:

Java
Observable.create { shooter ->
    // do something
    if (!shooter.isDisposed) {
        shooter.onNext("GeeksforGeeks")
    }
    // do and emit
    if (!shooter.isDisposed) {
        shooter.onNext("GfG")
    }
    // on finish
    if (!shooter.isDisposed) {
        shooter.onComplete()
    }
}
.subscribeOn(Schedulers.io())
.subscribe { item ->
    Log.d("Android", "item : $item")
}


Java
Observable.fromCallable {
    // perform a task and then return
    return@fromCallable "Geeks for Geeks"
}


输出:

"GeeksforGeeks" "GfG"

这个运算符从零开始创建一个 observable,但即使在此之后,它一次也只能发射 1 个项目,因此它返回一个项目!

图 2. Callable。

Java

Observable.fromCallable {
    // perform a task and then return
    return@fromCallable "Geeks for Geeks"
}

输出:

Geeks for Geeks

这并不意味着 fromCallable 等同于 Single。我们稍后会看到它是如何真正变化的。他们都将继续推迟行动,直到并且除非他们进行一些观察。这意味着它使任务变得“懒惰”。

因此,以下是 Create 和 fromCallable运算符之间的主要区别:

  1. Create 可以产生多种东西,而 fromCallable 只能产生一种。
  2. 没有简单的方法可以查看fromCallable中的 isDisposed 是否存在于 Create 中。因此,如果它在处理完一个项目后射击,那么该 throwable 将被处理到全局错误处理程序。这意味着应用程序将被终止。

结论

我们可以在这里使用 RxJava Create 来解决这个问题,希望这篇文章可以消除任何可能产生的疑问,消除知识的迷雾。