Observable.create()和Observable.fromCallable()之间的区别 [英] Difference between Observable.create() and Observable.fromCallable()

查看:306
本文介绍了Observable.create()和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屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆