我在RxJava2和流(Observable和Observer)方面遇到了一些问题 实际上,我的流返回错误
The mapper function returned a null value.
io.reactivex.internal.functions.ObjectHelper.requireNonNull(ObjectHelper.java:39)
io.reactivex.internal.operators.observable.ObservableMap$MapObserver.onNext(ObservableMap.java:57)
retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:51)
retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:37)
retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:47)
我的logcat没有显示代码在哪里中断。
public static Observable<List<Business.Response.Doc>> streamArticles_Business() {
NYT_TopStories_services nyt_services = NYT_TopStories_services.retrofit.create(NYT_TopStories_services.class);
return nyt_services.getArticles_Business()
.map(Business.Response::getDocs)
.filter(str -> str != null)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.timeout(20, TimeUnit.SECONDS);
}
和我的翻新版
@GET("search/v2/articlesearch.json?q=business&api-key=" + apiKey)
Observable<Business.Response> getArticles_Business();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.nytimes.com/svc/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
您有什么办法解决此问题?
答案 0 :(得分:0)
由于它是 RxJava 内部崩溃,因此您不会在代码中看到它,但是如果您遍历 #* @vtlvariable name="list" type="java.util.List" *#
#macro( disabled $list ) #if($list.isEmpty()) disabled #end #end
层次结构,您将了解其背后的原因。
如果您使用空值进行映射,则会发生此崩溃,基本上如果语句变为 map{}
它将崩溃。一个简单的解决方法是为所有可空类型设置默认值。
例如:
map{null}