我正在使用的库Message
使用回调对象发出一系列对象。
interface MessageCallback {
onMessage(Message message);
}
使用某些libraryObject.setCallback(MessageCallback)
调用添加回调,并使用非阻塞libraryObject.start()
方法调用启动该过程。
创建Observable<Message>
将发射这些对象的的最佳方法是什么?
如果libraryObject.start()
阻止了该怎么办?
我认为您需要这样的东西(scala中给出的示例)
import rx.lang.scala.{Observable, Subscriber}
case class Message(message: String)
trait MessageCallback {
def onMessage(message: Message)
}
object LibraryObject {
def setCallback(callback: MessageCallback): Unit = {
???
}
def removeCallback(callback: MessageCallback): Unit = {
???
}
def start(): Unit = {
???
}
}
def messagesSource: Observable[Message] =
Observable((subscriber: Subscriber[Message]) ⇒ {
val callback = new MessageCallback {
def onMessage(message: Message) {
subscriber.onNext(message)
}
}
LibraryObject.setCallback(callback)
subscriber.add {
LibraryObject.removeCallback(callback)
}
})
至于阻塞/非阻塞start()
:通常,基于回调的体系结构将回调订阅与进程启动分开。在这种情况下,您可以messageSource
完全独立start()
于进程的时间创建任意数量的。另外,是否分叉的决定完全取决于您。您的体系结构与此不同吗?
您还应该以某种方式完成该过程。最好是将onCompleted
处理程序添加到MessageCallback接口。如果要处理错误,请添加onError
处理程序。现在,您刚刚宣布了RxJava的基本构建基石,一个观察员 :-)
问题内容: 我尝试不使用任何xml。 像这样一个:转换为@Bean 问题在这里。 尝试将“ com.cloudlb.domain.User”转换为Class []无效。 错误:投放问题。 先感谢您。 问题答案:
问题内容: wifiservice.js: 我的整个控制器: 我想做的是调用$ scope.getList(),它返回周围wifi SSID的列表,然后在$ scope.checkin()中,我要处理这些数据。 由于扫描需要一些时间,因此我必须等待getList函数完成,这就是为什么我尝试使用.then的原因,但这给了我标题上的错误提示。有任何想法吗? 问题答案: 好吧,我想出了一些不同的东西:
问题内容: 我想使用Promise,但是我有一个类似以下格式的回调API: 1. DOM加载或其他一次事件: 2.普通回调: 3.节点样式回调(“ nodeback”): 4.带有节点样式回调的整个库: 如何在promise中使用API,如何“承诺”它? 问题答案: 承诺有状态,它们从待定状态开始,可以解决: 完成 意味着计算成功完成。 拒绝 表示计算失败。 承诺返回函数 绝不应该抛出,而应该
问题内容: 我想使用Promise,但是我有一个类似以下格式的回调API: 1. DOM加载或其他一次事件: 2.普通回调: 3.节点样式回调(“ nodeback”): 4.带有节点样式回调的整个库: 如何在Promise中使用API,如何“承诺”呢? 问题答案: 承诺具有状态,它们从待定状态开始,可以解决: fulfilled成 意味着计算成功完成。 fulfilled 表示计算失败。 承
如何将基于java的注释spring mvc maven项目转换为spring Boot?我没有xml文件,而是使用了webconfig类和webinitializer类。我知道如何将基于xml的项目转换为spring Boot。你可能会想有什么区别?对我来说,不同之处在于我说过我使用了webconfig类和webinitializer,我的spring mvc maven项目没有main类。我应
下面的代码来自一个名为ButterKnife的Android库。我正在弄清楚它是怎么工作的。 我试图重新创建此函数的行为: 和用法: 但是异常并非永远不会被捕获,而是在调用方法时在行中抛出。为什么? 还有,这到底是如何工作的?该方法如何知道要转换到什么?