autosuggestInput
.throttleLast(250, TimeUnit.MILLISECONDS)
.distinctUntilChanged()
.switchMap(input -> {
return autosuggestManager.autosuggest(input);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread)
.subscribe(results -> ...);Observable.zip(
// Get recent searches
recentSearchStore.getRecentSearches(),
// Get Price Alerts
priceAlertStore.getPriceAlerts(),
// Get latest saved search configuration
searchConfigStore.latestSearchConfig(),
(searches, alerts, lastConfig) -> {
// Batch the data based on common City
...
})
.flatMap(batched -> {
// Get images for the cities
return Observable.zip(
Observable.just(batched),
imageStore.getCityImage(batched.cityId()),
(ars, s) -> ars.setImageUrl(s));
});userVector
// Avoid uploading too often
.throttleLast(3, TimeUnit.SECONDS)
// Upload
.flatMap(it -> userVectorStore.upload(it))
// Re-subscribe on failure
.retry()
// Upload on background thread
.subscribeOn(Schedulers.newThread())
// Don't care about the results
.subscribe();Observable.defer(() -> Observable.just(expensiveCalculation()))
.subscribe(System.out::println);Observable.range(0, 10)
.doOnNext(integer -> {
if (integer.equals(9)) throw new RuntimeException("Surprise!");
})
.subscribe(System.out::println); // -> exploding at 9 :(if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP &&
"samsung".equalsIgnoreCase(Build.MANUFACTURER)) {
System.setProperty("rx.unsafe-disable", "True");
}B convert(A input){ ... }Observable<B> convert(A input){ ... }Observable<B> convert(A input){ ... }Observable<B> convert(A input){ ... }