首页 > 解决方案 > 来自 rx 链的方法中的返回值

问题描述

我有一个函数传递一个字符串返回另一个。但我的问题是使用 RxJava 我不知道如何返回字符串值。

        private void check(String value) {
            if (getGenderValue(value).equals("male")) {
               //do somehting
            }
        }

        private String getGenderValue(String value) {
              findGenderValueUseCase
                    .setType("somehting")
                    .setLanguage("language")
                    .setCountry("countryid")
                    .setValue(value)
                    .asObservable()
                    .compose(bindUntilEventDestroyView())
                    .subscribe(new NewSubscriber());
        }

标签: javarx-java

解决方案


您可以将方法更改为:

        private void check(String value) {
              findGenderValueUseCase
                    .setType("somehting")
                    .setLanguage("language")
                    .setCountry("countryid")
                    .setValue(value)
                    .asObservable()
                    .compose(bindUntilEventDestroyView())
                    .subscribe(value ->
                        if (getGenderValue(value).equals("male")) {
                         //do somehting
                        }
                    );
        }

但请记住,因为它是一个可观察的,“做某事”将为每个发出的值执行。

或者,如果您想以阻塞方式实现它:

        private void check(String value) {
          if (getGenderValue(value).equals("male")) {
           //do somehting
          }
        }

        private String getGenderValue(String value) {
              return findGenderValueUseCase
                    .setType("somehting")
                    .setLanguage("language")
                    .setCountry("countryid")
                    .setValue(value)
                    .asObservable()
                    .compose(bindUntilEventDestroyView())
                    .blockingFirst(); // here we only return the first value
        }

检查此答案以了解哪个最好。


推荐阅读