Rx java 为什么一些rxjava操作符有调度器参数,而另一些没有?

Rx java 为什么一些rxjava操作符有调度器参数,而另一些没有?,rx-java,Rx Java,我浏览了rxjava 1的文档,发现以下操作符有带有调度程序参数的变体: 缓冲器 去盎司 延迟 延迟订阅 从…起 间隔 范围 重复 重复 重播 复述 样品 跳过 skiplast 有人能解释这些而不是其他的原因吗?似乎在可能阻塞的地方提供了带有调度程序参数的变体,尽管我不清楚为什么我们需要这些变量,因为我们已经观察到了。需要时间或具有异步特性的操作符使用了一个调度程序参数允许您自定义操作员执行其工作的位置。通常,存在重载时会应用一个默认的调度程序以方便使用 调度器是异步边界上的一种抽象,它提供执

我浏览了rxjava 1的文档,发现以下操作符有带有调度程序参数的变体: 缓冲器 去盎司 延迟 延迟订阅 从…起 间隔 范围 重复 重复 重播 复述 样品 跳过 skiplast


有人能解释这些而不是其他的原因吗?

似乎在可能阻塞的地方提供了带有调度程序参数的变体,尽管我不清楚为什么我们需要这些变量,因为我们已经观察到了。

需要时间或具有异步特性的操作符使用了一个调度程序参数允许您自定义操作员执行其工作的位置。通常,存在重载时会应用一个默认的调度程序以方便使用

调度器是异步边界上的一种抽象,它提供执行任务、可运行性(有延迟或无延迟),并提供当前时间的概念。这种抽象支持使用非真正异步的调度器,甚至不执行具有实时延迟的任务:例如,trampoline调度器和TestScheduler

它们通过observeOn形成流中线程切换的非阻塞基础,并提供延迟任务的非阻塞执行,例如在一段时间后启动新缓冲区或定期发送值。如果没有它们,您将不得不求助于Thread.sleep,这将阻塞当前线程并可能浪费它

如果您必须与非反应性源或API交互,则这些API可能会自行阻塞:从磁盘读取字节、等待套接字的输入流等。调度器允许您将此阻塞移出某些线程,如Android主线程或Swing事件调度线程,这使这些线程可以自由地执行其主要任务:呈现用户界面并对用户输入作出反应

因此,当您看到调度程序参数时,它可能意味着:

事件/流管理应在不同的线程observeOn、subscribeOn、, 需要定时信息,使用TestScheduler进行回放、测试, 事件应该随着时间的推移而发生,这些事件会随着时间的推移而影响主流缓冲,在一段安静时间后发出事件,或者 避免阻止当前线程使用Future,这是一个封装在Observable中的非反应性API。
你应该问它的开发者,而不是我们。请先花你自己的时间去发现范例和库。丹尼尔,我们是谁。我以为这个列表会包括开发者。阿卡诺克,你说得对,我太懒了。似乎至少一般来说,为基于时间的运算符和其他可能阻塞的运算符提供了具有调度程序参数的变体。我想人们总是可以使用observeOn,否则..我不介意从开发人员那里听到消息,但我想我们可以把它放到床上。