AMcoder - javascript, python, java, html, php, sql

RxJava/Kotlin Դիտելի մեթոդի զանգերի շղթա. ինչպե՞ս դադարեցնել:

Ես ուզում եմ կիրառել նշումը խմբագրելու մեթոդ, այն պահել տեղական տվյալների բազայում (քեշ) և այն ուղարկել սերվերին որպես POST հարցում: Ես սովորում եմ RxJava-ն և ուզում էի գրառումից ստեղծել Observable-ը, այնուհետև դրա վրա կիրառել փոխակերպումներ՝ նմանեցնելով այն Entity մոդելին և պահել: Հարցը, որ իմ մեթոդը վերադարձնում է Completable, իսկ այս շղթան վերադարձնում է Observable<Completable>: Ինչպես բացել Completable-ը այս Observable-ից, որը ես օգտագործել եմ միայն RxJava-ի իրերը սկսելու համար: Յուրաքանչյուր editNote() մեթոդ վերադարձնում է Completable:

 override fun editNote(note: Note): Completable {
    return Observable.just(note)
        .map { mapper.mapToEntity(it) }
        .map { noteEntity ->
            factory.getCacheDataStore().editNote(noteEntity)
                .andThen { factory.getRemoteDataStore().editNote(noteEntity) }
        }
}

=======================================================

ԹԱՐՄԱՑՆԵԼ

Ի վերջո, ինձ հաջողվեց գտնել «լուծում», բայց վստահ չեմ, որ դա ճիշտ է :-)

override fun editNote(note: Note): Completable {
    return Observable.just(note)
        .map { mapper.mapToEntity(it) }
        .flatMapCompletable { noteEntity ->
            factory.getCacheDataStore().editNote(noteEntity)
                .andThen { factory.getRemoteDataStore().editNote(noteEntity) }
        }
}

Պատասխանները:


1

Դուք փնտրում եք flatMapCompletable-ը՝ map-ի փոխարեն, քանի որ map-ը պարզապես ընդհատում է հոսքը և արտանետումները քարտեզագրում այլ տեսակի, մինչդեռ «flatMap»-ը (կամ դա եղբայրներ և եղբայրներ է), փաստաթղթերից՝

Դիտարկվող նյութի արտանետվող տարրերը վերափոխեք դիտելիների, այնուհետև դրանցից արտանետումները հարթեցրեք մեկ դիտարկելիի:

Դուք կարող եք տեսնել դրա մարմարե դիագրամը Այստեղ

08.12.2018
  • Խնդրում եմ, կարո՞ղ եք դա (քարտեզի և հարթ քարտեզի տարբերությունը) թարգմանել անգլերեն: Rx փաստաթղթերը գրված են իրենց լեզվով և ցավալիորեն անթափանց են: 23.07.2019
  • stackoverflow .com/questions/22847105/ Գուցե յուրաքանչյուրի օգտագործման դեպքերը կօգնեն ձեզ հասկանալ տարբերությունը: 24.07.2019
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..