Giriş
Single nesnesi yaratıldıktan sonra subscribeOn metodu çağrılır.
create metodu
Şöyle yaparız.
Örnek
Şöyle yaparız.
Single.error() yerine direkt exception da fırlatılabilir.
Örnek
Şöyle yaparız
Şöyle yaparız.
Örnek
Şöyle yaparız
Şöyle yaparız.
Örnek
Şöyle yaparız
Single nesnesi yaratıldıktan sonra subscribeOn metodu çağrılır.
create metodu
Şöyle yaparız.
Single<String> saveBookToRepository(AddBookRequest addBookRequest) {
return Single.create(singleSubscriber -> {
if (notFound) {
singleSubscriber.onError(new EntityNotFoundException());
else {
singleSubscriber.onSuccess(addedBookId);
}
});
}
defer metoduÖrnek
Şöyle yaparız.
public Single<List<String>> getHealthChecks(JsonArray endpoints) {
return Single.defer(() -> {
List<Single<String>> healthChecks = endpoints
.stream()
.map(endpoint -> getHealthStatus(client, endpoint.toString()))
.collect(Collectors.toList());
return consumeHealthChecks(healthChecks);
});
}
private Single<List<String>> consumeHealthChecks(List<Single<String>> healthChecks) {
return Single.merge(healthChecks)
.timeout(1500, TimeUnit.MILLISECONDS)
.toList();
}
error metoduSingle.error() yerine direkt exception da fırlatılabilir.
Örnek
Şöyle yaparız
public static Single<Integer> externalMethod(int x){
int result = 0;
try{
/* Some database / time consuming logic */
result = x % 0;
}
catch (Exception e){
throw new CustomException(e.getMessage()); // --> APPROACH 1
OR
return Single.error(new CustomException(e.getMessage())); // --> APPROACH 2
}
return Single.just(result);
}
fromCallable metoduŞöyle yaparız.
Single.fromCallable(() -> {
...
return true;
}
)
.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(ignored -> {
// finished
}, error -> {
// error
});
subscribe metoduÖrnek
Şöyle yaparız
Single.just(1)
.flatMap(x -> externalMethod(x))
.subscribe(
s -> System.out.println("Success : " + s),
e -> System.out.println("Error : " + e)
);
public static Single<Integer> externalMethod(int x){
return Single.just(...);
}
subscribeOn metoduŞöyle yaparız.
return bookService.addBook(toAddBookRequest(addBookWebRequest)) //Single nesnesi döner
.subscribeOn(Schedulers.io())
.map(s -> ResponseEntity.created(...).body(...));
zip metodu
Örnek
Şöyle yaparız
public static <A, B> Single<B> zipOver(Single<Function<A, B>> applicativeFunctor,
Single<A> applicativeValue) {
return Single.zip(
applicativeFunctor,
applicativeValue,
(Function<A, B> f, A a) -> f.apply(a));
}
Hiç yorum yok:
Yorum Gönder