Rxjava lambda 表达式

Rxjava lambda expressions

我目前正在学习 lambda 表达式并且有一个关于 RxJava 的问题。我认为可以使用 lambda 表达式,这样您就不必创建匿名 class 并且它们只能在接口具有单个抽象方法的情况下使用。现在根据关于观察者的 http://reactivex.io/ 文档,它是一个接口。那么如何在一个接口中实现两个 lambda 表达式呢?

 Observable.<User>create(subscriber -> {

    User updatedUser = userService.updateuser(usermapper.userdtotoentity(user));
    subscriber.onNext(updatedUser);

}).subscribe(

     user -> {
       if (user != null) {
          response.resume(user);
      } else {
        response.resume(Response.status(Status.NOT_FOUND).build());
      }
    }, 

     error -> {
        logger.debug("User with email_id:" + email_id + " is not present");
        response.resume(error);
     }
 );

您正在使用的Observable.subscribe方法接受两个参数,这两个参数都是函数式接口类型。因此,您可以传递一个 lambda 表达式作为两者的值。

如果您觉得这样会使代码更清晰,您可以提取要传递给局部变量的参数:

Action1 onNext = user -> { .... };

Action1 onError = error -> { .... };

Observable.<User>create(subscriber -> {....}).subscribe(onNext, onError);