How to create Observable out of Runnable?

Viewed 3513

Sometimes I want to trigger a Runnable as part of my Observable sequence, but the Runnable does not report progress.

I have written a simple factory for wrapping a Runnable object into an Observable:

public static <T> Observable<T> fromRunnable(final Runnable action) {
    if (action == null) {
        throw new NullPointerException("action");
    }
    return Observable.fromPublisher(subscriber -> {
        try {
            action.run();
            subscriber.onComplete();
        } catch (final Throwable throwable) {
            subscriber.onError(throwable);
        }
    });
}

Usage:

Observable.concat(
    someTask, 
    MoreObservables.fromRunnable(() -> {
        System.out.println("Done. ");
    }));

But does RxJava 2 provide this functionality already?

1 Answers
Related