{"id":264,"date":"2018-04-20T18:12:43","date_gmt":"2018-04-20T09:12:43","guid":{"rendered":"http:\/\/www.charlezz.com\/?p=264"},"modified":"2019-08-18T22:27:31","modified_gmt":"2019-08-18T13:27:31","slug":"reactive-programing3-reactive-operator","status":"publish","type":"post","link":"https:\/\/charlezz.com\/?p=264","title":{"rendered":"Reactive Programing(3) \u2013 Reactive Operator"},"content":{"rendered":"<h1><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full\" src=\"https:\/\/cdn-images-1.medium.com\/max\/1000\/1*NkhhBPaaZXD9NSYC_xQ0LA.png\" width=\"1000\" height=\"562\" \/><\/h1>\n<h1><\/h1>\n<hr \/>\n<p><a href=\"https:\/\/www.charlezz.com\/?p=189\">Reactive Programing(1) &#8211; \ub9ac\uc561\ud2f0\ube0c \ud504\ub85c\uadf8\ub798\ubc0d \uac1c\ub150\uc7a1\uae30<\/a><br \/>\n<a class=\"row-title\" href=\"https:\/\/www.charlezz.com\/?p=242\" aria-label=\"\u201cReactive Programing(2) \u2013 Reactive Operator\u201d (\ud3b8\uc9d1)\">Reactive Programing(2) \u2013 Reactive Operator<\/a><br \/>\nReactive Programing(3) \u2013 Reactive Operator<br \/>\n<a class=\"row-title\" href=\"https:\/\/www.charlezz.com\/?p=283\" aria-label=\"\u201cReactive Programing(4) \u2013 Scheduler\u201d (\ud3b8\uc9d1)\">Reactive Programing(4) \u2013 Scheduler<\/a><br \/>\n<a class=\"row-title\" href=\"https:\/\/www.charlezz.com\/?p=299\" aria-label=\"\u201cReactive Programing(5) \u2013 \uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c\uc758 RxJava \ud65c\uc6a9\u201d (\ud3b8\uc9d1)\">Reactive Programing(5) \u2013 \uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c\uc758 RxJava \ud65c\uc6a9<\/a><\/p>\n<hr \/>\n<h1>Reactive Operators(\ub9ac\uc561\ud2f0\ube0c \uc5f0\uc0b0\uc790)<\/h1>\n<table id=\"tablepress-4\" class=\"tablepress tablepress-id-4\">\n<thead>\n<tr class=\"row-1 odd\">\n<th class=\"column-1\">\uc2a4\ucf00\uc974\ub7ec<\/th>\n<th class=\"column-2\">\uc124\uba85<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-hover\">\n<tr class=\"row-2 even\">\n<td class=\"column-1\">newThread()<\/td>\n<td class=\"column-2\">\uc0c8\ub85c\uc6b4 \uc2a4\ub808\ub4dc \uc0dd\uc131<\/td>\n<\/tr>\n<tr class=\"row-3 odd\">\n<td class=\"column-1\">single()<\/td>\n<td class=\"column-2\">\ub2e8\uc77c \uc2a4\ub808\ub4dc \uc0dd\uc131 \ud6c4 \uc0ac\uc6a9<\/td>\n<\/tr>\n<tr class=\"row-4 even\">\n<td class=\"column-1\">computation()<\/td>\n<td class=\"column-2\">\uacc4\uc0b0\uc6a9 \uc2a4\ub808\ub4dc<\/td>\n<\/tr>\n<tr class=\"row-5 odd\">\n<td class=\"column-1\">io()<\/td>\n<td class=\"column-2\">\ub124\ud2b8\uc6cc\ud06c, \ud30c\uc77c \uc785\ucd9c\ub825 \uc2a4\ub808\ub4dc<\/td>\n<\/tr>\n<tr class=\"row-6 even\">\n<td class=\"column-1\">trampoline()<\/td>\n<td class=\"column-2\">\ud604\uc81c \uc2a4\ub808\ub4dc\uc5d0 \ub300\uae30\ud589\ub82c \uc0dd\uc131<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><!-- #tablepress-4 from cache --><br \/>\n\uc9c0\ub09c \ud3ec\uc2a4\ud305\uc5d0\uc11c \uc0dd\uc131\uc5f0\uc0b0\uc790\uc640, \ubcc0\ud658\uc5f0\uc0b0\uc790\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\uc558\uc2b5\ub2c8\ub2e4.<br \/>\n\uc774\ubc88 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 \uacb0\ud569\uc5f0\uc0b0\uc790, \uc870\uac74\uc5f0\uc0b0\uc790\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<br \/>\n\u00a0<\/p>\n<h3>\uacb0\ud569\uc5f0\uc0b0\uc790<\/h3>\n<h4>1. zip() \ud568\uc218<\/h4>\n<p><a href=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-24.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-265\" src=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-24.png\" alt=\"\" width=\"1280\" height=\"760\" \/><\/a><br \/>\n2\uac1c \uc774\uc0c1\uc758 Observable\uc744 \uacb0\ud569\ud558\uc5ec \ub370\uc774\ud130\ub97c \ubc1c\ud589\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"\">val shapes = listOf(\"Circle\", \"Pentagon\", \"Star\")\r\nval colors = listOf(\"yellow\", \"Pink\", \"Cyan\")\r\nObservable.zip(\r\n      shapes.toObservable(),\r\n      colors.toObservable(),\r\n      BiFunction&lt;String, String, String&gt; { t1, t2 -&gt;\r\n         \"$t1 $t2\"\r\n      }\r\n).subscribe {\r\n   println(it)\r\n}<\/pre>\n<p>\uacb0\uacfc:<br \/>\nCircle yellow<br \/>\nPentagon Pink<br \/>\nStar Cyan<br \/>\n\ub3c4\ud615 \ub370\uc774\ud130\uc640 \uc0c9\uae54 \ub370\uc774\ud130 \ub450 \uc14b\ud2b8\ub97c \uc900\ube44\ud569\ub2c8\ub2e4.<br \/>\nzip()\uc73c\ub85c Observable\uc744 \ud558\ub098 \uc0dd\uc131\ud558\uace0 \uc778\uc790\ub85c \ub3c4\ud615, \uc0c9\uae54 \ub370\uc774\ud130\ub97c Observable\ud615\ud0dc\ub85c \ub123\uc2b5\ub2c8\ub2e4.<br \/>\n\ub450 Observable\uc5d0\uc11c \uac01\uac01 \ub370\uc774\ud130\uac00 \ubc1c\ud589\ub420\ub54c \ucc98\ub9ac\ud560 \uc218 \uc788\ub294 BiFunction \ucf5c\ubc31 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud569\ub2c8\ub2e4.<br \/>\n\ub2e4\uc74c\uacfc \uac19\uc774 \ucf54\ub4dc\ub97c \uc870\uae08 \ubcc0\ud615\ud574\ubcf4\uc558\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"\">val shapes = listOf(\"Circle\", \"Pentagon\", \"Star\", \"Hello\")\r\nval colors = listOf(\"yellow\", \"Pink\", \"Cyan\")\r\nObservable.zip(\r\n      shapes.toObservable(),\r\n      Observable.interval(0, 500L, TimeUnit.MILLISECONDS).take(colors.size.toLong()).map {\r\n         colors[it.toInt()]\r\n      },\r\n      BiFunction&lt;String, String, String&gt; { t1, t2 -&gt;\r\n         \"$t1 $t2\"\r\n      }\r\n).subscribe {\r\n   println(it)\r\n}\r\nThread.sleep(2000)<\/pre>\n<p>\ub3c4\ud615 \ub9ac\uc2a4\ud2b8\uc5d0 &#8216;Hello&#8217;\ub77c\ub294 \ub370\uc774\ud130\uac00 \ucd94\uac00\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc544\uae4c\ub294 \ub3c4\ud615 3\uac1c \uc0c9\uae54 3\uac1c\ub85c \ube44\uc728\uc774 1:1\ub85c \ub9de\uc558\uc73c\ub098 \uc5b4\ub290 \ud55c Observable\uc758 \ub370\uc774\ud130\uac00 \ub354 \ub9ce\uc740 \uacbd\uc6b0\ub294 \uc5b4\ub5bb\uac8c \ub420\uae4c\uc694?<br \/>\n\uadf8\ub9ac\uace0 \ud55c\uac00\uc9c0 \ub354,<br \/>\n\ub370\uc774\ud130\uac00 \ubc1c\ud589\ub418\ub294 \uc2dc\uae30\ub97c \ub2e4\ub974\uac8c \ud558\uae30 \uc704\ud574 interval\ub85c \uc0c9\uae54\uc744 500ms \uc2dc\uac04\ucc28\ub97c \ub450\uace0 \ubc1c\ud589\ud588\uc2b5\ub2c8\ub2e4.<br \/>\n\u00a0<br \/>\n\uacb0\uacfc:<br \/>\nCircle yellow<br \/>\nPentagon Pink<br \/>\nStar Cyan<br \/>\n\u00a0<br \/>\n\uc2e4\ud589\ud574\ubcf8\ub2e4\uba74 100ms \ub9c8\ub2e4 \uc774\ubca4\ud2b8\ub97c \ucc98\ub9ac\ud558\ub294\uac83\uc744 \ud655\uc778\ud558\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub9ac\uace0 \uc5b4\ub290 \ud55c Observable\uc774 \ub370\uc774\ud130\ub97c \ubc1c\ud589\ud558\uc9c0 \uc54a\ub294\uacbd\uc6b0 \uc774\ubca4\ud2b8\uac00 \ucc98\ub9ac\ub418\uc9c0 \uc54a\ub294\uac83\ub3c4 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h4><\/h4>\n<h5>*zipWith()\ud568\uc218<\/h5>\n<p><a href=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-25.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-268\" src=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-25.png\" alt=\"\" width=\"1280\" height=\"760\" \/><\/a><br \/>\nzip\ud568\uc218\uc640 \ub3d9\uc77c \ud558\uc9c0\ub9cc \uc0dd\uc131 \uc5f0\uc0b0\uc790\uac00 \uc544\ub2c8\ub77c Observable\uac1d\uccb4\uac00 \uac00\uc9c0\uace0 \uc788\ub294 \uc5f0\uc0b0\uc790 \uc785\ub2c8\ub2e4. Observable\uc744 \ub2e4\uc591\ud55c \ud568\uc218\uc640 \uc870\ud569\ud558\uba74\uc11c \uc911\uac04\uc911\uac04 \ud638\ucd9c\ud560 \uc218 \uc788\ub294 \uc7a5\uc810\uc774 \uc788\uc2b5\ub2c8\ub2e4<\/p>\n<pre class=\"\">Observable.zip(\r\n      Observable.just(100, 200, 300),\r\n      Observable.just(10, 20, 30),\r\n      BiFunction&lt;Int, Int, Int&gt; { t1, t2 -&gt;\r\n         t1 + t2\r\n      }\r\n).zipWith(Observable.just(1, 2, 3), BiFunction { t1: Int, t2: Int -&gt; t1 + t2 })\r\n      .subscribe {\r\n         println(it)\r\n      }<\/pre>\n<p>\uacb0\uacfc:<br \/>\n111<br \/>\n222<br \/>\n333<\/p>\n<h4>2. combineLatest() \ud568\uc218<\/h4>\n<p>zip\uacfc \ube44\uc2b7\ud558\uc9c0\ub9cc \ub2e4\ub978\uc810\uc740 \ub450\uac1c\uc774\uc0c1\uc758 Observable\uac1d\uccb4\ub97c \ud569\uc131\ud560 \ub54c \uc11c\ub85c\ub2e4\ub978 Observable\ub07c\ub9ac \ub370\uc774\ud130\uac00 \ubc1c\ud589\ud558\ub294\uac83\uc744 \uae30\ub2e4\ub838\ub2e4\uac00 \ud569\uc131\ud558\ub294\uac8c \uc544\ub2c8\ub77c \uac00\uc7a5 \ucd5c\uadfc\uc5d0 \ubc1c\ud589\ub41c \ub370\uc774\ud130\ub07c\ub9ac \ud569\uc131\ud569\ub2c8\ub2e4.<br \/>\n\uc989, Observable\uc740 \uc544\ub798\uc758 \ub2e4\uc774\uc5b4\uadf8\ub7a8\uc758 \ud0c0\uc784\ub77c\uc778\ucc98\ub7fc \ub3c5\ub9bd\uc801\uc73c\ub85c \ub370\uc774\ud130\ub97c \ubc1c\ud589\ud558\uace0, \ubc1c\ud589\ud588\uc744\ub54c\uc758 \ub2e4\ub978 Observable\uc758 \uac00\uc7a5 \ucd5c\uadfc\uac12\uc744 \uac00\uc838\uc640 \ud569\uc131\ud569\ub2c8\ub2e4.<br \/>\n<a href=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-26.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-269\" src=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-26.png\" alt=\"\" width=\"1280\" height=\"760\" \/><\/a><\/p>\n<pre class=\"\">val colors = listOf(\"Pink\", \"Orange\", \"Cyan\", \"Yellow\")\r\nval shapes = listOf(\"Diamond\", \"Star\", \"Pentagon\")\r\nval source = Observable.combineLatest(\r\n      colors.toObservable().zipWith(Observable.interval(0L, 100L, TimeUnit.MILLISECONDS), BiFunction { color: String, _: Long -&gt; color }),\r\n      shapes.toObservable().zipWith(Observable.interval(50L,200L, TimeUnit.MILLISECONDS),BiFunction { shape: String, _: Long -&gt; shape }),\r\n      BiFunction { color: String, shape: String -&gt; \"$color $shape\" }\r\n)\r\nsource.subscribe {\r\n   println(it)\r\n}\r\nThread.sleep(1000)<\/pre>\n<p>\uacb0\uacfc:<br \/>\nPink Diamond<br \/>\nOrange Diamond<br \/>\nCyan Diamond<br \/>\nCyan Star<br \/>\nYellow Star<br \/>\nYellow Pentagon<br \/>\n\u00a0<\/p>\n<h4>3. merge() \ud568\uc218<\/h4>\n<p>\ub450\uac1c\uc774\uc0c1\uc758 Observable\uc5d0\uc11c \ub370\uc774\ud130 \ubc1c\ud589 \uc21c\uc11c\uc5ec\ubd80\uc5d0 \uc0c1\uad00\uc5c6\uc774 \uc5c5\uc2a4\ud2b8\ub9bc\uc5d0\uc11c \uba3c\uc800 \uc785\ub825\ub418\ub294 \ub370\uc774\ud130\ub97c \uadf8\ub300\ub85c \ubc1b\uc544 \ubc1c\ud589\ud569\ub2c8\ub2e4.<br \/>\n<a href=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/merge.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-270\" src=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/merge.png\" alt=\"\" width=\"1280\" height=\"760\" \/><\/a><br \/>\n\u00a0<\/p>\n<pre class=\"\">val colorSet1 = listOf(\"Red\", \"Green\")\r\nval colorSet2 = listOf(\"Yellow\", \"Cyan\", \"Pink\")\r\nval colorSrc1 = Observable.zip(\r\n      colorSet1.toObservable(),\r\n      Observable.interval(0L, 200L, TimeUnit.MILLISECONDS).take(colorSet1.size.toLong()),\r\n      BiFunction { color: String, _: Long -&gt;\r\n         color\r\n      }\r\n)\r\nval colorSrc2 = Observable.zip(\r\n      colorSet2.toObservable(),\r\n      Observable.interval(100L, 200L, TimeUnit.MILLISECONDS).take(colorSet2.size.toLong()),\r\n      BiFunction { color: String, _: Long -&gt;\r\n         color\r\n      }\r\n)\r\nObservable.merge(\r\n      colorSrc1,\r\n      colorSrc2\r\n).subscribe {\r\n   println(it)\r\n}\r\nThread.sleep(2000)\r\n<\/pre>\n<p>\uacb0\uacfc:<br \/>\nRed<br \/>\nYellow<br \/>\nGreen<br \/>\nCyan<br \/>\nPink<br \/>\n\u00a0<\/p>\n<h4>4. concat() \ud568\uc218<\/h4>\n<p>2\uac1c \uc774\uc0c1\uc758 Observable\uc744 \uc774\uc5b4 \ubd99\uc774\ub294 \ud568\uc218.<br \/>\n<a href=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-27.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-271\" src=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-27.png\" alt=\"\" width=\"1280\" height=\"760\" \/><\/a><br \/>\n<em>Note:\uccab\ubc88\uc9f8 Observable\uc758 onComplete \uc774\ubca4\ud2b8\uac00 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\uc73c\uba74 \uba54\ubaa8\ub9ac \ub204\uc218\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4.<\/em><br \/>\n\u00a0<\/p>\n<pre class=\"\">val colors1 = listOf(\"Red\", \"Green\", \"Blue\")\r\nval colors2 = listOf(\"Yellow\", \"Blue\", \"Pink\")\r\nObservable.concat(colors1.toObservable(), colors2.toObservable())\r\n      .subscribe {\r\n         println(it)\r\n      }<\/pre>\n<p>&nbsp;<\/p>\n<h3>\uc870\uac74 \uc5f0\uc0b0\uc790<\/h3>\n<p>\uc870\uac74 \uc5f0\uc0b0\uc790\ub294 Observable\uc758 \ud750\ub984\uc744 \uc81c\uc5b4\ud569\ub2c8\ub2e4.<\/p>\n<h4>1. amb() \u00a0\ud568\uc218<\/h4>\n<p>\uac00\uc7a5 \uba3c\uc800 \ub370\uc774\ud130\ub97c \ubc1c\ud589\ud558\ub294 Observable\uc744 \ud0dd\ud569\ub2c8\ub2e4. \ub098\uba38\uc9c0\ub294 \ubb34\uc2dc\ub429\ub2c8\ub2e4.<br \/>\n<a href=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-28.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-272\" src=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-28.png\" alt=\"\" width=\"1280\" height=\"770\" \/><\/a><\/p>\n<pre class=\"\">val colors1 = arrayOf(\"Red\", \"Green\", \"Blue\")\r\nval colors2 = arrayOf(\"Yellow\", \"Cyan\")\r\nObservable.amb(\r\n      listOf(colors2.toObservable().delay(100L, TimeUnit.MILLISECONDS),\r\n            colors1.toObservable())\r\n).subscribe {\r\n   println(it)\r\n}<\/pre>\n<p>\uacb0\uacfc:<br \/>\nRed<br \/>\nGreen<br \/>\nBlue<br \/>\ncolors2 \ubc30\uc5f4\ub9cc 100ms \uc9c0\uc5f0\uc2dc\ucf1c\uc11c \ubc1c\ud589\ud55c \uacb0\uacfc,<br \/>\ncolors1 \uc774 \ucc44\ud0dd\ub418\uc5b4 colors2\ub294 \ubb34\uc2dc\ub418\ub294\uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n\u00a0<\/p>\n<h4>2. takeUntil() \ud568\uc218<\/h4>\n<p>take()\ud568\uc218\uc5d0 \uc870\uac74\uc744 \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<a href=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-29.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-273\" src=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-29.png\" alt=\"\" width=\"1280\" height=\"610\" \/><\/a><\/p>\n<pre class=\"\">val colors = arrayOf(\"Red\", \"Yellow\", \"Green\", \"Cyan\", \"Blue\", \"Pink\")\r\ncolors.toObservable()\r\n      .zipWith(\r\n            Observable.interval(100L, TimeUnit.MILLISECONDS),\r\n            BiFunction { t1: String, t2: Long -&gt;\r\n               t1\r\n            }\r\n      )\r\n      .takeUntil(Observable.timer(550L, TimeUnit.MILLISECONDS))\r\n      .subscribe {\r\n         println(it)\r\n      }\r\nThread.sleep(1000)<\/pre>\n<p>\uacb0\uacfc:<br \/>\nRed<br \/>\nYellow<br \/>\nGreen<br \/>\nCyan<br \/>\nBlue<\/p>\n<h4>3. skipUntil() \ud568\uc218<\/h4>\n<p>takeUntil\uacfc \ubc18\ub300\ub85c Observable\uc5d0\uc11c \ub370\uc774\ud130\ub97c \ubc1b\uc744\ub54c\uae4c\uc9c0 \uac12\uc744 \uac74\ub108 \ub701\ub2c8\ub2e4.<br \/>\n<a href=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-30.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-274\" src=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-30.png\" alt=\"\" width=\"1280\" height=\"750\" \/><\/a><\/p>\n<pre class=\"\">val colors = arrayOf(\"Red\", \"Yellow\", \"Green\", \"Cyan\", \"Blue\", \"Pink\")\r\ncolors.toObservable()\r\n      .zipWith(\r\n            Observable.interval(100L, TimeUnit.MILLISECONDS),\r\n            BiFunction { t1: String, t2: Long -&gt;\r\n               t1\r\n            }\r\n      )\r\n      .skipUntil(Observable.timer(550L, TimeUnit.MILLISECONDS))\r\n      .subscribe {\r\n         println(it)\r\n      }\r\nThread.sleep(1000)<\/pre>\n<p>\uacb0\uacfc:<br \/>\nPink<br \/>\n4. all() \ud568\uc218<br \/>\n\ubaa8\ub4e0 \uc870\uac74\uc774 true\uc77c\ub54c\ub9cc \ub370\uc774\ud130\ub97c true\ub97c \ubc1c\ud589\ud569\ub2c8\ub2e4.<br \/>\n<a href=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-31.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-275\" src=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-31.png\" alt=\"\" width=\"1280\" height=\"630\" \/><\/a><\/p>\n<pre class=\"\">val colors = arrayOf(\"Red\", \"Yellow\", \"Green\", \"Cyan\", \"Blue\", \"Pink\")\r\ncolors.toObservable().all { t: String -&gt;\r\n   t == \"Red\"\r\n}.subscribe { t: Boolean? -&gt;\r\n   println(t)\r\n}<\/pre>\n<p>\uacb0\uacfc:<br \/>\nfalse<br \/>\n\u00a0<br \/>\n\u00a0<\/p>\n<h3>\uae30\ud0c0 \uc5f0\uc0b0\uc790<\/h3>\n<h4>1. delay() \ud568\uc218<\/h4>\n<p>Observable\uc758 \ub370\uc774\ud130 \ubc1c\ud589\uc744 \uc9c0\uc5f0\uc2dc\ucf1c\uc8fc\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<br \/>\n<a href=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-33.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-277\" src=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-33.png\" alt=\"\" width=\"1280\" height=\"620\" \/><\/a><br \/>\n\u00a0<\/p>\n<pre class=\"\">val startTime = System.currentTimeMillis()\r\nval colors = arrayOf(\"Red\", \"Orange\", \"Yellow\")\r\ncolors.toObservable()\r\n      .delay(100L, TimeUnit.MILLISECONDS)\/\/\uc774 \ub77c\uc778\uc744 \uc8fc\uc11d \ud6c4 \uc2e4\ud589\ud558\uba74 \ub300\ub7b5 100ms \ub9cc\ud07c \ube68\ub77c\uc9d0\r\n      .subscribe {\r\n         println(\"$it - ${System.currentTimeMillis() - startTime}\")\r\n      }\r\nThread.sleep(1000)<\/pre>\n<p>\uacb0\uacfc:<br \/>\nRed &#8211; 168<br \/>\nOrange &#8211; 168<br \/>\nYellow &#8211; 168<br \/>\n\u00a0<\/p>\n<h4>2. timeInterval() \ud568\uc218<\/h4>\n<p>\uc5b4\ub5a4 \uac12\uc744 \ubc1c\ud589\ud588\uc744 \ub54c \uc774\uc804 \uac12\uc744 \ubc1c\ud589\ud55c \ud6c4 \uc5bc\ub9c8\ub098 \uc2dc\uac04\uc774 \ud758\ub800\ub294\uc9c0 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n<a href=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-34.png\"><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-278\" src=\"http:\/\/www.charlezz.com\/wordpress\/wp-content\/uploads\/2018\/04\/image-34.png\" alt=\"\" width=\"1280\" height=\"620\" \/><\/a><\/p>\n<pre class=\"\">val colors = arrayOf(\"Red\", \"Green\", \"Orange\")\r\ncolors.toObservable()\r\n      .delay {\r\n         Thread.sleep(Random().nextInt(1000).toLong())\r\n         Observable.just(it)\r\n      }\r\n      .timeInterval()\r\n      .subscribe {\r\n         println(\"$it\")\r\n      }<\/pre>\n<p>\uacb0\uacfc:<br \/>\nTimed[time=671, unit=MILLISECONDS, value=Red]<br \/>\nTimed[time=275, unit=MILLISECONDS, value=Green]<br \/>\nTimed[time=238, unit=MILLISECONDS, value=Orange]<br \/>\n\u00a0<br \/>\n1\ucd08\ub0b4\ub85cRandom\ud558\uac8c \uc2a4\ub808\ub4dc\ub97c sleep()\ud558\ubbc0\ub85c \uc2e4\ud589\ud560 \ub54c \ub9c8\ub2e4 1\ucd08\ubbf8\ub9cc\uc73c\ub85c time \uac12\uc774 \ub2e4\ub974\uac8c \ub098\uc624\ub294 \uac83\uc744 \ud655\uc778 \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Reactive Programing(1) &#8211; \ub9ac\uc561\ud2f0\ube0c \ud504\ub85c\uadf8\ub798\ubc0d \uac1c\ub150\uc7a1\uae30 Reactive Programing(2) \u2013 Reactive Operator Reactive Programing(3) \u2013 Reactive Operator Reactive Programing(4) \u2013 Scheduler Reactive Programing(5) \u2013 \uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0\uc11c\uc758 RxJava \ud65c\uc6a9 Reactive Operators(\ub9ac\uc561\ud2f0\ube0c \uc5f0\uc0b0\uc790) \uc9c0\ub09c \ud3ec\uc2a4\ud305\uc5d0\uc11c \uc0dd\uc131\uc5f0\uc0b0\uc790\uc640, \ubcc0\ud658\uc5f0\uc0b0\uc790\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\uc558\uc2b5\ub2c8\ub2e4. \uc774\ubc88 \ud3ec\uc2a4\ud305\uc5d0\uc11c\ub294 \uacb0\ud569\uc5f0\uc0b0\uc790, \uc870\uac74\uc5f0\uc0b0\uc790\uc5d0 \ub300\ud574\uc11c \uc54c\uc544\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \u00a0 \uacb0\ud569\uc5f0\uc0b0\uc790 1. zip() \ud568\uc218 2\uac1c \uc774\uc0c1\uc758 Observable\uc744 \uacb0\ud569\ud558\uc5ec [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[7],"tags":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/264"}],"collection":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=264"}],"version-history":[{"count":2,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/264\/revisions"}],"predecessor-version":[{"id":1476,"href":"https:\/\/charlezz.com\/index.php?rest_route=\/wp\/v2\/posts\/264\/revisions\/1476"}],"wp:attachment":[{"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=264"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=264"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/charlezz.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=264"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}