src/main/java/io/reactivex/Single.java
@CheckReturnValue
    @NonNull
    @SchedulerSupport(SchedulerSupport.NONE)
    public static <T> Single<T> fromCallable(final Callable<? extends T> callable) {
        ObjectHelper.requireNonNull(callable, "callable is null");
        return RxJavaPlugins.onAssembly(new SingleFromCallable<T>(callable));
    }
@CheckReturnValue
    @NonNull
    @SchedulerSupport(SchedulerSupport.NONE)
    public static <T> Single<T> fromCallable(final Callable<? extends T> callable) {
        ObjectHelper.requireNonNull(callable, "callable is null");
        return RxJavaPlugins.onAssembly(new SingleFromCallable<T>(callable));
    }
@ CheckReturnValue @ NonNull @ SchedulerSupport ( SchedulerSupport . NONE ) public static < T > Single < T > fromCallable ( final Callable < ? extends T > callable ) { ObjectHelper . requireNonNull ( callable , "callable is null" ) ; return RxJavaPlugins . onAssembly ( new SingleFromCallable < T > ( callable ) ) ; }
Returns a {@link Single} that invokes passed function and emits its result for each new SingleObserver that subscribes.
<p>
Allows you to defer execution of passed function until SingleObserver subscribes to the {@link Single}.
It makes passed function "lazy".
Result of the function invocation will be emitted by the {@link Single}.
<p>
<img width="640" height="467" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/Single.fromCallable.png" alt="">
<dl>
<dt><b>Scheduler:</b></dt>
<dd>{@code fromCallable} does not operate by default on a particular {@link Scheduler}.</dd>
<dt><b>Error handling:</b></dt>
<dd> If the {@link Callable} throws an exception, the respective {@link Throwable} is
delivered to the downstream via {@link SingleObserver#onError(Throwable)},
except when the downstream has disposed this {@code Single} source.
In this latter case, the {@code Throwable} is delivered to the global error handler via
{@link RxJavaPlugins#onError(Throwable)} as an {@link io.reactivex.exceptions.UndeliverableException UndeliverableException}.
</dd>
</dl>

@param callable
function which execution should be deferred, it will be invoked when SingleObserver will subscribe to the {@link Single}.
@param <T>
the type of the item emitted by the {@link Single}.
@return a {@link Single} whose {@link SingleObserver}s' subscriptions trigger an invocation of the given function.
Returns a { @link Single } that invokes passed function and emits its result for each new SingleObserver that subscribes . <p > Allows you to defer execution of passed function until SingleObserver subscribes to the { @link Single } . It makes passed function lazy . Result of the function invocation will be emitted by the { @link Single } . <p > <img width = 640 height = 467 src = https : // raw . github . com / wiki / ReactiveX / RxJava / images / rx - operators / Single . fromCallable . png alt = > <dl > <dt > <b > Scheduler : < / b > < / dt > <dd > { @code fromCallable } does not operate by default on a particular { @link Scheduler } . < / dd > <dt > <b > Error handling : < / b > < / dt > <dd > If the { @link Callable } throws an exception the respective { @link Throwable } is delivered to the downstream via { @link SingleObserver#onError ( Throwable ) } except when the downstream has disposed this { @code Single } source . In this latter case the { @code Throwable } is delivered to the global error handler via { @link RxJavaPlugins#onError ( Throwable ) } as an { @link io . reactivex . exceptions . UndeliverableException UndeliverableException } . < / dd > < / dl >