Observable.create()和Observable.fromCallable()之间的区别 [英] Difference between Observable.create() and Observable.fromCallable()
问题描述
假设我们使用 .create()
从 SharedPrefs
获取通用的 Object
:
Suppose we are getting a generic Object
from SharedPrefs
using .create()
:
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()
发射后立即调用 onComplete()
,并使用 Observable.fromCallable()
,是否有任何区别?>?如果是这样,优点/缺点
是什么?
Is there any Difference if we call onComplete()
immediately after first emmit from Observable.create()
and using Observable.fromCallable()
? If so, what are the pros/cons
?
推荐答案
Observable.create
让我们发出多个项目,而 fromCallable
仅发出一个项目.
Observable.create
let's you emit multiple items while fromCallable
emits only a single item.
您应该使用后者,因为它更能表达具有单个元素序列的意图,并且开销明显较低.
You should use the latter as it is more expressive about the intent of having a single element sequence and has a slighly lower overhead.
缺点是您不能拥有一个异步单元素源,而 create
让我们将对 onNext
的调用延迟到以后的某个时间点.
Drawback is that you can't have an async single element source with it whereas create
let's you delay the call to onNext
to a later point in time.
这篇关于Observable.create()和Observable.fromCallable()之间的区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!