我有一个这样简单的用例:在远程源代码中查找一本书,如果它不存在,就创建它。这就是我使用rxJava1的方法:
public void handleBook(int id) {
getBookById(id)
.flatMap(new Func1<Book, Observable<Book>> {
@Override
public Observable<Book> call(Book book) {
if(book != null) // it exists
...
else // it's null - it doesn't exist ...
}
}
}
public Observable<Book> getBookById(int id) {
Book book = remoteSource.book(id)
return Observable.just(book)
}
在这种情况下,如果对象book
为null,则Observable.just调用抛出异常。它显式地检查空值。回到rxJava 1,我可以将一个null作为值传递给Observable.just(或其他附件),然后在映射或平面映射运算符中,我会检查我得到的值是否为null(意味着结果不存在)或否(意味着我得到了一些结果)。
由于这个限制,我似乎不能再做这个检查了。我试着让你看得到。如果book
对象为空,则整个线程将完成,并在返回值可见时结束。空()。
如果我需要的东西在那里,我如何检查执行的rx链,然后分支执行链?
而不是使用Observable
注意:现在我没有IDE,所以代码可能会有一些编译器失败。我想你会很容易修好的
public Single<Book> getBookById(int id) {
return Single.create((e) => {
Book book = remoteSource.book(id)
if (book != null)
e.emit(book);
else
e.fail();
}
}
public void handleBook(int id) {
getBookById(id)
.onErrorResume(e => createBook(...))
...
}
就像前面说的,我不确定确切的代码,但你可以把它当作伪代码来读
定义 对象是 JavaScript 语言最主要的数据类型,三种原始类型的值——数值、字符串、布尔值——在一定条件下,也会自动转为对象,也就是原始类型的“包装对象”(wrapper)。 所谓“包装对象”,指的是与数值、字符串、布尔值分别相对应的Number、String、Boolean三个原生对象。这三个原生对象可以把原始类型的值变成(包装成)对象。 var v1 = new Number(123)
对象包装器是实现了 freemarker.template.ObjectWrapper 接口的类。它的目标是实现Java对象(应用程序中特定类等,比如 String, Map,List 实例)和FTL类型系统之间的映射。换句话说, 它指定了模板如何在数据模型(包含从模板中调用的Java方法的返回值)中发现Java对象。 对象包装器作为插件放入 Configuration 中,可以使用 object
包装对象 定义 包装对象的构造函数 包装对象实例的方法 原始类型的自动转换 自定义方法 Boolean对象 概述 Boolean实例对象的布尔值 Boolean函数的类型转换作用 包装对象 定义 在JavaScript中,“一切皆对象”,数组和函数本质上都是对象,就连三种原始类型的值——数值、字符串、布尔值——在一定条件下,也会自动转为对象,也就是原始类型的“包装对象”。 所谓“包装对象”,就是分
问题内容: 我想监视字典中的更改,但是由于某种原因,未调用监视回调。 这是我使用的控制器: 这是小提琴。 我希望每次更改名称或姓氏时都会触发$ watch回调,但是不会发生。 正确的方法是什么? 问题答案: 调用with 作为第三个参数: 默认情况下,在JavaScript中比较两个复杂对象时,将检查它们是否具有“引用”相等性,即询问两个对象是否引用同一事物,而不是“值”相等性,后者检查这些对
我有一个class,它在其他属性中包含一个可观察列表 如何让JavaFX提取class