จะรวมสถานที่ใกล้เคียง api และรายละเอียดสถานที่ api ได้อย่างไร ชุดติดตั้งเพิ่มเติม java rx

ฉันยังใหม่กับ Android และฉันต้องการความช่วยเหลือ ฉันต้องการหาร้านอาหารใกล้กับผู้ใช้ และแสดงข้อมูลของพวกเขาในมุมมองผู้รีไซเคิล ดังนั้นฉันจึงใช้ Places api: บริเวณใกล้เคียงและรายละเอียด ฉันมีคำขอสองคำขอ คำขอหนึ่งดึงรายชื่อร้านอาหารใกล้กับผู้ใช้หนึ่งรายการ (ฉันดึงข้อมูลหนึ่งรายการที่มีรายการวัตถุร้านอาหาร ฉันบันทึกไว้ในวัตถุร้านอาหารจำนวนมาก) และคำขอหนึ่งดึงรายละเอียดของแต่ละร้านอาหารที่พบโดย คำขอแรก (ต้องมีรหัสสถานที่ทำงาน ซึ่งพบพร้อมกับคำขอแรก) ปัญหาคือคำขอไม่ได้รับการดำเนินการในลำดับที่ดี ดังนั้นมุมมองผู้รีไซเคิลของฉันจึงไม่แสดงในลักษณะที่ดี ฉันควรจะเชื่อมโยงคำขอของฉันให้มีเพียงหนึ่งเดียวใช่ไหม? ฉันค้นคว้าข้อมูลแล้วแต่ไม่พบวิธีการดังกล่าว เนื่องจากฉันต้องส่งคำขอครั้งที่สองสำหรับร้านอาหารแต่ละแห่งที่พบในคำขอแรก

นี่คือกระแสของฉัน

ฉันจะสร้างสตรีมหนึ่งรายการกับพวกเขาได้อย่างไร

private static PlacesService placesService = PlacesService.retrofit.create(PlacesService.class);


    public static Observable<RestaurantObject> streamFetchRestaurants(String latitudeLongitude, int radius, String type, String apiKey) {
        return placesService.getRestaurants(latitudeLongitude,radius,type, apiKey)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .timeout(10, TimeUnit.SECONDS);
    }

    public static Observable<RestaurantInformationObject> streamFetchRestaurantInfos(String id, String apikey) {
        return placesService.getRestaurantInfo(id, apikey)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .timeout(10, TimeUnit.SECONDS);
    }

person kittyr    schedule 09.05.2019    source แหล่งที่มา
comment
อาจซ้ำกับ Google Places Api จัดเรียงตามระยะทาง   -  person fantaghirocco came to Rome    schedule 09.05.2019


คำตอบ (1)


การใช้ concatMap ควรเก็บถาวรสิ่งที่คุณต้องการ:

streamFetchRestaurants(latLon, radius, type, apiKey)
            .concatMap(restaurantObject -> streamFetchRestaurantInfos(restaurantObject.id, apiKey))
            .subscribe(restaurantInformationObject -> {
                // Do something with the restaurant information object
            });

ตรงกันข้ามกับ flatMap โดยจะรักษาลำดับดั้งเดิมของรายการร้านอาหารของคุณ ดูเอกสารประกอบของ RxJava หรือบทความต่อไปนี้เพื่อดูรายละเอียดเพิ่มเติม: https://fernandocejas.com/2015/01/11/rxjava-observable-tranformation-concatmap-vs-flatmap/

person dthulke    schedule 14.05.2019