개체를 만드는 값 비싼 계산이 있다고 가정 해보십시오. 발신자에게 어디에서 그런 유연성이 있는지 알려주고 싶습니다. subscribeOn()
. 그러나 부작용 (예 : 개체가 일부 외부 데이터 저장소에 의해 뒷받침 됨) 때문에 계산을 두 번 이상하고 싶지 않습니다.싱글에서 방출 한 값을 어떻게 메모합니까?
나는
MyObject myObject = MyObject.createExpensively(params);
return Single.just(myObject);
을 쓸 수 있지만,이 호출 스레드에서 고가의 작업을 수행합니다.
나는
Callable<MyObject> callable =() -> MyObject.createExpensively(params);
return Single.fromCallable(callable);
을 쓸 수 있지만, 이것은 다수의 가입자가있는 경우 내가 원하는하지 않은, 가입 당 일단 createExpensively()
(부작용) 호출합니다.
createExpensively()
이 한 번만 호출되고 부작용이 한 번만 발생하도록하려면 여기에서 찾고있는 패턴은 무엇입니까?
[Single.cache()] (http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Single.html#cache--)에서 보았습니까? – akarnokd
싱글 톤 패턴? – tolpp
@akarnokd 어떻게 작동합니까 - Single.fromCallable (c) .cache()? 그렇다면 답을하면 받아 들일 것입니다. –