public static Async constant()

in util/base/src/main/java/jetbrains/jetpad/base/Asyncs.java [55:97]


  public static <ValueT> Async<ValueT> constant(final ValueT val) {
    return new Async<ValueT>() {
      @Override
      public Registration onSuccess(Consumer<? super ValueT> successHandler) {
        successHandler.accept(val);
        return Registration.EMPTY;
      }

      @Override
      public Registration onResult(Consumer<? super ValueT> successHandler, Consumer<Throwable> failureHandler) {
        return onSuccess(successHandler);
      }

      @Override
      public Registration onFailure(Consumer<Throwable> failureHandler) {
        return Registration.EMPTY;
      }

      @Override
      public <ResultT> Async<ResultT> map(Function<? super ValueT, ? extends ResultT> success) {
        ResultT result;
        try {
          result = success.apply(val);
        } catch (Throwable t) {
          return Asyncs.failure(t);
        }
        //return cannot be moved to try block to avoid catching possible errors from Asyncs.constant call
        return Asyncs.constant(result);
      }

      @Override
      public <ResultT> Async<ResultT> flatMap(Function<? super ValueT, Async<ResultT>> success) {
        Async<ResultT> result;
        try {
          result = success.apply(val);
        } catch (Throwable t) {
          return Asyncs.failure(t);
        }
        //return cannot be moved to try block to avoid catching possible errors from Asyncs.constant call
        return result == null ? Asyncs.<ResultT>constant(null) : result;
      }
    };
  }