繁体   English   中英

zip rxjava运算符无法解析方法订阅

[英]zip rxjava operator cannot resolve method subscribe

我想通过网络发送多个请求,本教程对我有所帮助,但我被后者所困。 似乎我应该从onSubscribe,onNext,....返回一个值(OrderValues),因为apply函数返回一个值。 但是....,onNext默认情况下返回void。 有帮助吗?这是我的代码

Observable<Restaurant> orderRestaurant= IdentityClient.getAPIService()
        .getRestaurantById(restaurantId)
        .subscribeOn(Schedulers.newThread())
        .observeOn(AndroidSchedulers.mainThread());

    Observable<Menu> orderMenu= IdentityClient.getAPIService()
        .getMenuById(menuId)
        .subscribeOn(Schedulers.newThread())
        .observeOn(AndroidSchedulers.mainThread());

    Observable<User> orderUser= IdentityClient.getAPIService()
        .getUserById(userId)
        .subscribeOn(Schedulers.newThread())
        .observeOn(AndroidSchedulers.mainThread());

    Observable<OrderValues> combineValues=Observable.zip(orderRestaurant, 
    orderMenu, orderUser,
       new Function3<Restaurant, Menu, User, OrderValues>() {
   @Override
   public OrderValues apply(Restaurant restaurant, Menu menu, User user) 
    throws Exception {
       return new OrderValues(restaurant,menu,user);
   }
I get an error here "cannot resolve method 'subscribe anonymous 
org.reactivestreams.Subscriber(....OrderValues)
   }).subscribe(new Subscriber<OrderValues>() {
   @Override
   public void onSubscribe(Subscription s) {

   }

   @Override
   public void onNext(OrderValues orderValues) {

   }

   @Override
   public void onError(Throwable t) {

   }

   @Override
   public void onComplete() {

   }
   });

显示错误

我假设您正在使用RxJava 2。

使用Observer而不是Subscriber 并且也不要将结果分配给新的Observable(您称其为CombineValues)。

private void myMethod() {
    Observable.zip(orderRestaurant, orderMenu, orderUser, new Function3<Restaurant, Menu, User, OrderValues>() {
                @Override
                public OrderValues apply(@NonNull Restaurant restaurant, @NonNull Menu menu, @NonNull User user) throws Exception {
                    return new OrderValues(restaurant, menu, user);
                }
            }).subscribe(new Observer<OrderValues>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(OrderValues orderValues) {

                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onComplete() {

                }
            });
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM