я объединил несколько наблюдателей в zip для выполнения нескольких запросов с сервера, но onNext не выполняется, поэтому я не могу получить возвращаемые значения. menuName, restaurantName и userName являются глобальными переменными.
public void getOrderValues(String restaurantIdx,String menuIdx,String userIdx ) {
try {
Observable<Restaurant> orderRestaurant = IdentityClient.getAPIService()
.getRestaurantById(restaurantIdx)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread());
Observable<Menu> orderMenu = IdentityClient.getAPIService()
.getMenuById(menuIdx)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread());
Observable<User> orderUser = IdentityClient.getAPIService()
.getUserById(userIdx)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread());
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) {
Log.e("Eatright Error", d.toString()+"");
}
@Override
public void onNext(OrderValues orderValues) {
menuName = orderValues.menu.getName();
restaurantName = orderValues.restaurant.getName();
userName = orderValues.user.getUserName();
}
@Override
public void onError(Throwable e) {
Log.e("Eatright Error", e.getMessage()+"");
}
@Override
public void onComplete() {
Log.e("Eatright Error","Completed");
}
});
} catch (Exception e) {
Log.e("Error Eatright", e.getMessage()+"");
}
}}
//GET restaurant by Id
@GET("/api/restaurants/getrestaurant/{id}")
Observable<Restaurant> getRestaurantById(
@Path("id") String id);
//GET menu by Id
@GET("/api/menus/getmenu/{id}")
Observable<Menu> getMenuById(
@Path("id") String id);
@GET("/api/account/user/{id}")
Observable<User> getUserById( @Path("id") String id
);
Когда я подписываю наблюдаемые объекты на отдельных наблюдателей, я получаю возвращаемое значение onNext, но не при их объединении.
API-тест на почтальоне
{
"RestaurantId": "00000000-0000-0000-0000-000000000000",
"Name": "Papaye",
"City": null,
"Town": null,
"Description": null,
"Image": null,
"DateCreated": null,
"Contact1": null,
"Contact2": null,
"NumOfSeats": null
}
{
"MenuId": "00000000-0000-0000-0000-000000000000",
"RestaurantId": null,
"Name": "Fufu and Light Soup",
"Price": null,
"MainImage": null,
"LastModified": null,
"DateCreated": null,
"Type": null
}
{
"userName": "[email protected]"
}
getRestaurantById
(илиgetMenuById
,getUserById
)? - person GVillani82   schedule 17.04.2017Observable.just()
, каждый из которых возвращает некоторые значения по умолчанию? - person akarnokd   schedule 18.04.2017