package Ġopen . a qr le i . com . rx j avas ample . rx java Ċ Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* Ġ@ author Ġ Ġa qr Le i Ġon Ġ 2 0 1 8 / 7 / 1 7 Ċ Ġ* Ċ Ġ* Ġcreate ãĢģ just ãĢģ from ãĢģ defer ãĢģ range ãĢģ interval ãĢģ timer ãĢģ empty ãĢģ never Ċ Ġ* Ġ ãĢģ error ãĢģ ( repeat ãĢģ delay ) Ċ Ġ* Ċ Ġ*/ Ċ object ĠCreate Operator Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠGenerate Type Ġ{ ĊĠĠĠĠĠĠĠ ĠTIMER , ĊĠĠĠĠĠĠĠ ĠJ UST , ĊĠĠĠĠĠĠĠ ĠFROM , ĊĠĠĠĠĠĠĠ ĠDE FER , ĊĠĠĠĠĠĠĠ ĠR ANGE , ĊĠĠĠĠĠĠĠ ĠINTER VAL , ĊĠĠĠĠĠĠĠ ĠCREATE , ĊĠĠĠĠĠĠĠ ĠEMPTY , ĊĠĠĠĠĠĠĠ ĠNE VER , ĊĠĠĠĠĠĠĠ ĠERROR , ĊĠĠĠĠĠĠĠ ĠRE PEAT , ĊĠĠĠĠĠĠĠ ĠDEL AY ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsubscribe ( action : Ġ( String ) Ġ-> ĠUnit ){ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġresult . append (" Create : Ġ") ĊĠĠĠĠĠĠĠ Ġgenerate Observable ( Generate Type . values ()[ Random (). nextInt ( 1 2 )] ). switch Thread () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ("${ Generate Type . values ()[ it . toInt () ]} Ġ\ t ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( result . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ("${ it . message } Ġ\ t ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( result . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append (" complete Ġ\ t Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( result . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Observable ( type : ĠGenerate Type ): ĠObservable < Long > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerate Type . CREATE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* æľĢ åŁºæľ¬ çļĦ åĪĽå»º æĵįä½ľ ç¬¦ */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . create < Long > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . onNext ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . onComplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerate Type . JUST Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġå°Ĩ æŁĲä¸ª å¯¹è±¡ è½¬æį¢ ä¸º Observable å¯¹è±¡ å¹¶ åıĳ å°Ħ åĩº åİ» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠæŃ¤ å¯¹è±¡ åľ¨ just æĹ¶ å°± ç¡®å®ļ äºĨ ï¼Į å¦Ĥæŀľ æĺ¯ ä¸ª åıĺéĩı ï¼Į åį³ ä½¿ ä¹ĭåĲİ æĽ´æĸ° äºĨ ï¼Į ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġjust ä¸Ń è¿ĺæĺ¯ åİŁ æĿ¥ çļĦåĢ¼ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerate Type . FROM Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* å°Ĩ æŁĲä¸ª å¯¹è±¡ è½¬æį¢ ä¸º Observable å¯¹è±¡ å¹¶ åıĳ å°Ħ åĩº åİ» ï¼Į å¦Ĥæŀľ æĺ¯ list å¯¹è±¡ ï¼Į åĪĻ ä¼ļ ä¾Ŀ æ¬¡ åıĳ å°Ħ éĩĮ éĿ¢çļĦ item ( è¿Ļæĺ¯ ä¸İ just ä¸įåĲĮçļĦ åľ°æĸ¹ ) */ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . from Callable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 . to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġåľ¨ è®¢ éĺħ ï¼Ī subscribe ) çļĦæĹ¶åĢĻ æīį åĪĽå»º Observable å¯¹è±¡ ï¼Į åı¯ä»¥ ä¿Ŀè¯ģ è¦ģ åıĳ å°Ħ çļĦåĢ¼ æĺ¯ æľĢ æĸ°çļĦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerate Type . DEF ER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . defer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( 3 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġæł¹æį® ä¼łåħ¥ çļĦ Ġ åĪĿå§ĭ åĢ¼ Ġstart ĠåĴĮ Ġ åıĳéĢģ æ¬¡æķ° Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġåıĳ å°Ħ Ġstart , Ġstart + 1 ,... start + count - 1 çļĦ æķ° åĢ¼ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerate Type . RANGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . range Long ( 4 , Ġ 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġæ¯ı ä¸ª å¯¹è±¡ ä¹ĭéĹ´ éĹ´ éļĶ å¤ļ éķ¿ æĹ¶éĹ´ åıĳ å°Ħ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerate Type . INTERVAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . interval Range ( 5 , Ġ 5 , Ġ 1 , Ġ 1 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ å»¶ è¿ Ł æĹ¶éĹ´ åıĳ å°Ħ å¯¹è±¡ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerate Type . TIMER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . timer ( 1 , ĠTimeUnit . SECONDS , ĠS chedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġä¸į åıĳ å°Ħ ä»»ä½ķ æķ°æį® ï¼Į çĽ´æİ¥ æī§è¡Į onComplete ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerate Type . EMPTY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . empty < Long >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* æĹł æķ°æį® ï¼Į æĹł éĢļçŁ¥ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerate Type . NE VER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . never < Long >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ åĽŀè°ĥ ĠonError ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerate Type . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . error < Long > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThrowable (" error Ġtest ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ éĩįå¤į åıĳ å°Ħ ï¼Į è®¢ éĺħ åľ¨ computation ĠScheduler ~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerate Type . REPEAT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( 1 0 L ). repeat ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* å»¶ è¿ Ł äºĭä»¶ ä¸ŃçļĦ æŁĲ ä¸Ģæ¬¡ åıĳéĢģ */ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGenerate Type . DELAY Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( 1 1 L ). delay ( 1 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊ Ċ }