Observable.create() 和 Observable.fromCallable() 之间的区别
Difference between Observable.create() and Observable.fromCallable()
假设我们使用 .create()
:
从 SharedPrefs
得到一个通用的 Object
return Observable.create(subscriber -> {
String json = sharedPreferences.getString(key, "");
T myClass = gson.fromJson(json, generic);
subscriber.onNext(myClass);
subscriber.onComplete();
});
并使用 .fromCallable()
:
return Observable.fromCallable(() -> {
String json = sharedPreferences.getString(key, "");
return gson.fromJson(json, generic);
});
如果我们在第一次从Observable.create()
emmit 后立即调用onComplete()
和使用Observable.fromCallable()
有什么不同吗?如果有,pros/cons
是什么?
Observable.create
让我们发射多个项目,而 fromCallable
只发射一个项目。
您应该使用后者,因为它更能表达具有单个元素序列的意图并且开销略低。
缺点是您不能使用它来使用异步单元素源,而 create
让您将对 onNext
的调用延迟到稍后的时间点。
假设我们使用 .create()
:
SharedPrefs
得到一个通用的 Object
return Observable.create(subscriber -> {
String json = sharedPreferences.getString(key, "");
T myClass = gson.fromJson(json, generic);
subscriber.onNext(myClass);
subscriber.onComplete();
});
并使用 .fromCallable()
:
return Observable.fromCallable(() -> {
String json = sharedPreferences.getString(key, "");
return gson.fromJson(json, generic);
});
如果我们在第一次从Observable.create()
emmit 后立即调用onComplete()
和使用Observable.fromCallable()
有什么不同吗?如果有,pros/cons
是什么?
Observable.create
让我们发射多个项目,而 fromCallable
只发射一个项目。
您应该使用后者,因为它更能表达具有单个元素序列的意图并且开销略低。
缺点是您不能使用它来使用异步单元素源,而 create
让您将对 onNext
的调用延迟到稍后的时间点。