Я чувствую, что кто-то должен был это пробовать, но я не могу найти хороший способ сделать что-то, если наблюдаемое займет много времени.
Это поток, который я хочу.
Start a search.
If the search takes longer than some time,
show a spinner or show progress bar.
When finished do subscription action and hide spinner/progress bar.
Ближайший, о котором я могу думать, похож на Zip
manager.search(searchTerm)
.zip(Observable.Timer(1, TimeUnit.SECONDS))
.subscribe(
// if the search is non null then we are good
// if the long time is non 0 we need to show spinner
);
Есть ли что-то лучше? Я пробовал весь день без успеха. В идеальном мире я чувствую, что хочу что-то вроде
manager.search(searchTerm)
.timeout(i -> /* do timeout stuff */, 1, TimeUnit.SECONDS)
.subscribe(item -> /* do search result stuff */);