{"id":4079,"date":"2017-02-08T21:25:30","date_gmt":"2017-02-08T21:25:30","guid":{"rendered":"https:\/\/www.ckl.io\/br\/?p=4079"},"modified":"2026-08-15T16:01:12","modified_gmt":"2026-08-15T16:01:12","slug":"reactivex","status":"publish","type":"post","link":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/","title":{"rendered":"Como ReactiveX funciona?"},"content":{"rendered":"<p>Sendo um desenvolvedor de software mobile, eu tenho que lidar com programa\u00e7\u00e3o ass\u00edncrona diariamente. Para fornecer ao usu\u00e1rio a melhor experi\u00eancia poss\u00edvel, tarefas como&nbsp;fazer uma requisi\u00e7\u00e3o web, buscar informa\u00e7\u00f5es&nbsp;no meu banco de dados, esperar algum processo secund\u00e1rio terminar ou baixar uma imagem devem ser executas de modo ass\u00edncrono. Mesmo com alguns anos de experi\u00eancia, \u00e0s vezes eu esque\u00e7o a sintaxe para alguma chamada ass\u00edncrona. Como eu tenho que implementar o callback para esse processo? Como eu devo lidar com o erro se alguma coisa der errado?. Existem centenas de formas de lidar com essas respostas, e, como&nbsp;desenvolvedor, \u00e9 meu trabalho saber qual se encaixa melhor em cada situa\u00e7\u00e3o. A primeira vez que eu li sobre ReactiveX, eu pensei comigo mesmo: \u201c\u00d3timo, outra API ass\u00edncrona para memorizar\u2026\u201d. Eu n\u00e3o poderia estar mais enganado.<\/p>\n<p><!--more--><\/p>\n<p>A API do ReactiveX (ou Rx) padroniza todos os processos ass\u00edncronos com uma sintaxe muito simples: <code>onNext()<\/code>, <code>onError()<\/code> e <code>onCompletion()<\/code>. \u00c9 o fim da decoreba de sintaxes para lidar com aqueles callbacks que eu s\u00f3 escrevo duas vezes por ano. Sem mencionar que o c\u00f3digo fica muito mais bonito j\u00e1 que boa parte de boilerplate&nbsp;\u00e9 removido.<\/p>\n<p>Ele se baseia em tr\u00eas ideias principais: o padr\u00e3o Observador, o padr\u00e3o Iterador e programa\u00e7\u00e3o funcional. O padr\u00e3o Observador \u00e9 uma forma sensacional para lidar com tarefas ass\u00edncronas: o observable notifica todos seus receptores cada vez que um novo evento ocorre. O padr\u00e3o Iterador permite um maior desacoplamento entre o tipo do objeto e os algoritmos, permitindo que ele seja usado em um grande n\u00famero de cen\u00e1rios. Programa\u00e7\u00e3o funcional n\u00e3o s\u00f3 torna o c\u00f3digo mais conciso, mas tamb\u00e9m ajuda muito nesses cen\u00e1rios concorrentes. Essas ideias combinadas tornam ReactiveX uma \u00f3tima forma de lidar com programa\u00e7\u00e3o ass\u00edncrona.<\/p>\n<p>Ele \u00e9 uma API muito direta, depois que voc\u00ea entende como observables, observers, operators e schedulers funcionam. Vamos respirar fundo e come\u00e7ar.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-4073 aligncenter\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/deep-breath.gif\" alt=\"deep breath\" width=\"550\" height=\"287\"><\/p>\n<h2>Observables e observers<\/h2>\n<p>Essa parte \u00e9 bem simples: observables v\u00e3o emitir eventos, como eu mencionei antes, e alguns outros objetos (chamados de observers) v\u00e3o se inscrever a esses observables e v\u00e3o lidar com esses eventos emitidos.<br \/>\nMoleza, n\u00e3o \u00e9?<\/p>\n<h2>Operators<\/h2>\n<p>\u00c9 aqui que grande parte da magia do Rx acontece.<br \/>\nVamos supor que voc\u00ea quer reagir \u00e0s mudan\u00e7as em um campo de busca: pegar a entrada do usu\u00e1rio, criar uma requisi\u00e7\u00e3o para seu backend e apresentar os resultados da busca para o usu\u00e1rio. Voc\u00ea sabe que n\u00e3o deve reagir para cada novo caractere que o usu\u00e1rio digitar, ou um usu\u00e1rio que digita r\u00e1pido vai acabar causando muitas requisi\u00e7\u00f5es em um curto per\u00edodo de tempo, o que seria mais dif\u00edcil de lidar e adicionaria muita press\u00e3o sobre o backend. O que voc\u00ea faria nesse caso? Provavelmente criaria uma tarefa temporizada que iria checar se o campo de busca sofreu alguma mudan\u00e7a a cada poucos segundos, e se ele sofreu, enviar a requisi\u00e7\u00e3o de busca. Isso acarreta mais c\u00f3digo para lidar, e mais espa\u00e7o para erros (temporizadores s\u00e3o uma grande fonte de problemas na minha experi\u00eancia). E se eu te dissesse que ReactiveX pode lidar com tudo isso com apenas uma linha de c\u00f3digo? M\u00e1gica, certo?<br \/>\nEstou falando sobre operators agora. A maioria desses caras opera sobre um observable e retorna outro observable, permitindo que voc\u00ea encadeie m\u00faltiplos deles para obter o comportamento desejado. No exemplo do campo de busca que eu mencionei antes, um \u00fanico operator do tipo debounce teria atingido o comportamento que n\u00f3s quer\u00edamos.<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-4074 aligncenter\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/debounce.gif\" alt=\"debounce\" width=\"1033\" height=\"356\"><\/p>\n<p>Existem operators que podem criar, transformar, filtrar, combinar observables e muito, muito mais. Voc\u00ea pode ter uma ideia boa de como us\u00e1-los <a href=\"http:\/\/reactivex.io\/documentation\/operators.html#categorized\">aqui<\/a>.<\/p>\n<h2>Schedulers<\/h2>\n<p>Esses caras me fazem querer usar Rx para todas as tarefas ass\u00edncronas que eu tenho.<br \/>\nAlguns operators especiais aceitam schedulers como um par\u00e2metro para permitir multithreading na cadeia de operators. Isso permite que o Rx comece a lidar com um evento emitido por um observable em uma thread, processe parte dele em outra thread e apresente o resultado em uma terceira thread.<\/p>\n<p><img decoding=\"async\" class=\" wp-image-4075 aligncenter\" src=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/schedulers.png\" alt=\"schedulers\" width=\"518\" height=\"649\" srcset=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/schedulers.png 1280w, https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/schedulers-768x960.png 768w\" sizes=\"(max-width: 518px) 100vw, 518px\" \/><\/p>\n<p>Isso pode parecer com muitas threads para voc\u00ea. Mas a primeira vez que eu comecei uma requisi\u00e7\u00e3o de rede em uma thread de entrada\/sa\u00edda, processei a resposta em uma thread secund\u00e1ria e atualizei a interface na thread principal com apenas tr\u00eas operadores a mais, eu vi o qu\u00e3o inestim\u00e1veis esses schedulers s\u00e3o.<\/p>\n<h2>Eu preciso usar ReactiveX ou eu vou morrer!<\/h2>\n<p>Voc\u00ea deve estar se perguntando se pode usar ReactiveX nos seus projetos e a resposta provavelmente \u00e9 sim, porque ele foi implementado em diversas linguagens e plataformas. Confira a <a href=\"http:\/\/reactivex.io\/languages.html\">lista oficial de linguagens suportadas<\/a>. Mas n\u00e3o se desespere se voc\u00ea n\u00e3o encontrar sua linguagem ou plataforma preferia ali, provavelmente voc\u00ea pode encontrar algu\u00e9m no <a href=\"https:\/\/github.com\/search?utf8=%E2%9C%93&amp;q=rx\">github<\/a> que j\u00e1 implementou uma biblioteca para voc\u00ea.<\/p>\n<p>Happy coding!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sendo um desenvolvedor de software mobile, eu tenho que lidar com programa\u00e7\u00e3o ass\u00edncrona diariamente. Para fornecer ao usu\u00e1rio a melhor experi\u00eancia poss\u00edvel, tarefas como&nbsp;fazer uma requisi\u00e7\u00e3o web, buscar informa\u00e7\u00f5es&nbsp;no meu banco de dados, esperar algum processo secund\u00e1rio terminar ou baixar uma imagem devem ser executas de modo ass\u00edncrono. Mesmo com alguns anos de experi\u00eancia, \u00e0s [&hellip;]<\/p>\n","protected":false},"author":65,"featured_media":4098,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_title":"Como ReactiveX funciona? | Blog | Cheesecake Labs","_yoast_wpseo_metadesc":"A API do ReactiveX padroniza todos os processos ass\u00edncronos com uma sintaxe simples. E o c\u00f3digo fica melhor j\u00e1 que boa parte de boilerplate \u00e9 removido.","_yoast_wpseo_meta-robots-noindex":"","_yoast_wpseo_canonical":"","ai_summary":"ReactiveX padroniza processos ass\u00edncronos com uma sintaxe simples baseada em onNext(), onError() e onCompletion(), reduzindo boilerplate e a necessidade de memorizar diferentes APIs de callback.\nA biblioteca se baseia em tr\u00eas ideias principais: o padr\u00e3o Observador, o padr\u00e3o Iterador e programa\u00e7\u00e3o funcional, com observables emitindo eventos e observers se inscrevendo para trat\u00e1-los.\nOperators permitem encadear transforma\u00e7\u00f5es sobre observables para resolver cen\u00e1rios complexos com pouco c\u00f3digo, como usar debounce para evitar requisi\u00e7\u00f5es excessivas em um campo de busca.\nSchedulers possibilitam multithreading na cadeia de operators, permitindo, por exemplo, executar uma requisi\u00e7\u00e3o em uma thread de I\/O, processar a resposta em outra e atualizar a interface na thread principal.","ai_summary_en":"","ai_summary_pt-br":"ReactiveX padroniza processos ass\u00edncronos com uma sintaxe simples baseada em onNext(), onError() e onCompletion(), reduzindo boilerplate e a necessidade de memorizar diferentes APIs de callback.\nA biblioteca se baseia em tr\u00eas ideias principais: o padr\u00e3o Observador, o padr\u00e3o Iterador e programa\u00e7\u00e3o funcional, com observables emitindo eventos e observers se inscrevendo para trat\u00e1-los.\nOperators permitem encadear transforma\u00e7\u00f5es sobre observables para resolver cen\u00e1rios complexos com pouco c\u00f3digo, como usar debounce para evitar requisi\u00e7\u00f5es excessivas em um campo de busca.\nSchedulers possibilitam multithreading na cadeia de operators, permitindo, por exemplo, executar uma requisi\u00e7\u00e3o em uma thread de I\/O, processar a resposta em outra e atualizar a interface na thread principal.","footnotes":"","ckl_wpml_lang":"br","ckl_wpml_source_id":4067,"ckl_wpml_status":"ok: lang=br trid=9065 source=4067 at 2026-08-15 16:01:12"},"categories":[1435,471],"tags":[],"class_list":["post-4079","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-engenharia-de-produto","category-engenharia"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Como ReactiveX funciona? | Blog | Cheesecake Labs<\/title>\n<meta name=\"description\" content=\"A API do ReactiveX padroniza todos os processos ass\u00edncronos com uma sintaxe simples. E o c\u00f3digo fica melhor j\u00e1 que boa parte de boilerplate \u00e9 removido.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como ReactiveX funciona? | Blog | Cheesecake Labs\" \/>\n<meta property=\"og:description\" content=\"A API do ReactiveX padroniza todos os processos ass\u00edncronos com uma sintaxe simples. E o c\u00f3digo fica melhor j\u00e1 que boa parte de boilerplate \u00e9 removido.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/\" \/>\n<meta property=\"og:site_name\" content=\"Cheesecake Labs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/cheesecakelabs\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-08T21:25:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-15T16:01:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/Banner_reactive6.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Cheesecake Labs\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@cheesecakelabs\" \/>\n<meta name=\"twitter:site\" content=\"@cheesecakelabs\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/\"},\"author\":{\"name\":\"Natan Grando\"},\"headline\":\"Como ReactiveX funciona?\",\"datePublished\":\"2017-02-08T21:25:30+00:00\",\"dateModified\":\"2026-08-15T16:01:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/\"},\"wordCount\":845,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/#organization\"},\"image\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/Banner_reactive6.png\",\"articleSection\":[\"Engenharia de Produto\",\"Engenharia\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/\",\"url\":\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/\",\"name\":\"Como ReactiveX funciona? | Blog | Cheesecake Labs\",\"isPartOf\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/Banner_reactive6.png\",\"datePublished\":\"2017-02-08T21:25:30+00:00\",\"dateModified\":\"2026-08-15T16:01:12+00:00\",\"description\":\"A API do ReactiveX padroniza todos os processos ass\u00edncronos com uma sintaxe simples. E o c\u00f3digo fica melhor j\u00e1 que boa parte de boilerplate \u00e9 removido.\",\"breadcrumb\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#primaryimage\",\"url\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/Banner_reactive6.png\",\"contentUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/Banner_reactive6.png\",\"width\":2000,\"height\":720,\"caption\":\"ReactiveX\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cheesecakelabs.com\/blog\/br\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Como ReactiveX funciona?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/#website\",\"url\":\"https:\/\/cheesecakelabs.com\/blog\/br\/\",\"name\":\"Cheesecake Labs\",\"description\":\"Empresa de desenvolvimento e design de aplicativos mobile &amp; web que est\u00e1 reinventando o desenvolvimento de produtos com times remotos. N\u00f3s desenvolvemos aplicativos iOS, Android e aplica\u00e7\u00f5es Web com as melhores empresas dos EUA, do Brasil e do mundo.\",\"publisher\":{\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cheesecakelabs.com\/blog\/br\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/#organization\",\"name\":\"Cheesecake Labs\",\"alternateName\":\"Cheesecake Labs Inc\",\"url\":\"https:\/\/cheesecakelabs.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/cheesecakelabs.com\/#logo\",\"url\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2022\/06\/cheesecake-labs-1.png\",\"contentUrl\":\"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2022\/06\/cheesecake-labs-1.png\",\"caption\":\"Cheesecake Labs\",\"inLanguage\":\"br\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/cheesecakelabs.com\/#primary-image\",\"url\":\"https:\/\/ckl-website-v4-strapi-prod.s3.us-east-2.amazonaws.com\/ai_software_development_company_83fb512983.webp\",\"contentUrl\":\"https:\/\/ckl-website-v4-strapi-prod.s3.us-east-2.amazonaws.com\/ai_software_development_company_83fb512983.webp\",\"width\":1920,\"height\":1080,\"caption\":\"Cheesecake Labs \u2014 AI, Data & Blockchain software development services\",\"inLanguage\":\"br\"},\"sameAs\":[\"https:\/\/www.facebook.com\/cheesecakelabs\",\"https:\/\/x.com\/cheesecakelabs\",\"https:\/\/www.instagram.com\/cheesecakelabs\/\",\"https:\/\/www.linkedin.com\/company\/cheesecake-labs\/\",\"https:\/\/www.youtube.com\/channel\/UCdGEQ5AHJcmIlaOaI5fGGVA\",\"https:\/\/clutch.co\/profile\/cheesecake-labs\",\"https:\/\/www.behance.net\/cheesecakelabs\",\"https:\/\/dribbble.com\/cheesecakelabs\",\"https:\/\/www.designrush.com\/agency\/profile\/cheesecake-labs\",\"https:\/\/www.g2.com\/products\/cheesecake-labs\/reviews\"],\"description\":\"Cheesecake Labs is a software development studio that designs and builds custom digital products \u2014 web, mobile, and platforms \u2014 combining product design and high-performance engineering.\",\"foundingDate\":\"2013\"},{\"@type\":\"Person\",\"name\":\"Natan Grando\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/cheesecakelabs.com\/blog\/br\/#\/schema\/person\/image\/\",\"url\":false,\"contentUrl\":false,\"caption\":\"Natan Grando\"},\"description\":\"10 years of experience in Marketing and Sales in the Technology sector. My main purpose is help, support and structure efficient operations and also develop independent and multidisciplinary teams.\",\"url\":\"https:\/\/cheesecakelabs.com\/blog\/br\/\/autor\/natan\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Como ReactiveX funciona? | Blog | Cheesecake Labs","description":"A API do ReactiveX padroniza todos os processos ass\u00edncronos com uma sintaxe simples. E o c\u00f3digo fica melhor j\u00e1 que boa parte de boilerplate \u00e9 removido.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/","og_locale":"pt_BR","og_type":"article","og_title":"Como ReactiveX funciona? | Blog | Cheesecake Labs","og_description":"A API do ReactiveX padroniza todos os processos ass\u00edncronos com uma sintaxe simples. E o c\u00f3digo fica melhor j\u00e1 que boa parte de boilerplate \u00e9 removido.","og_url":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/","og_site_name":"Cheesecake Labs","article_publisher":"https:\/\/www.facebook.com\/cheesecakelabs","article_published_time":"2017-02-08T21:25:30+00:00","article_modified_time":"2026-08-15T16:01:12+00:00","og_image":[{"width":2000,"height":720,"url":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/Banner_reactive6.png","type":"image\/png"}],"author":"Cheesecake Labs","twitter_card":"summary_large_image","twitter_creator":"@cheesecakelabs","twitter_site":"@cheesecakelabs","twitter_misc":{"Escrito por":null,"Est. tempo de leitura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#article","isPartOf":{"@id":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/"},"author":{"name":"Natan Grando"},"headline":"Como ReactiveX funciona?","datePublished":"2017-02-08T21:25:30+00:00","dateModified":"2026-08-15T16:01:12+00:00","mainEntityOfPage":{"@id":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/"},"wordCount":845,"commentCount":0,"publisher":{"@id":"https:\/\/cheesecakelabs.com\/blog\/br\/#organization"},"image":{"@id":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#primaryimage"},"thumbnailUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/Banner_reactive6.png","articleSection":["Engenharia de Produto","Engenharia"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/","url":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/","name":"Como ReactiveX funciona? | Blog | Cheesecake Labs","isPartOf":{"@id":"https:\/\/cheesecakelabs.com\/blog\/br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#primaryimage"},"image":{"@id":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#primaryimage"},"thumbnailUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/Banner_reactive6.png","datePublished":"2017-02-08T21:25:30+00:00","dateModified":"2026-08-15T16:01:12+00:00","description":"A API do ReactiveX padroniza todos os processos ass\u00edncronos com uma sintaxe simples. E o c\u00f3digo fica melhor j\u00e1 que boa parte de boilerplate \u00e9 removido.","breadcrumb":{"@id":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#primaryimage","url":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/Banner_reactive6.png","contentUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2017\/02\/Banner_reactive6.png","width":2000,"height":720,"caption":"ReactiveX"},{"@type":"BreadcrumbList","@id":"https:\/\/cheesecakelabs.com\/blog\/br\/reactivex\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cheesecakelabs.com\/blog\/br\/blog\/"},{"@type":"ListItem","position":2,"name":"Como ReactiveX funciona?"}]},{"@type":"WebSite","@id":"https:\/\/cheesecakelabs.com\/blog\/br\/#website","url":"https:\/\/cheesecakelabs.com\/blog\/br\/","name":"Cheesecake Labs","description":"Empresa de desenvolvimento e design de aplicativos mobile &amp; web que est\u00e1 reinventando o desenvolvimento de produtos com times remotos. N\u00f3s desenvolvemos aplicativos iOS, Android e aplica\u00e7\u00f5es Web com as melhores empresas dos EUA, do Brasil e do mundo.","publisher":{"@id":"https:\/\/cheesecakelabs.com\/blog\/br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cheesecakelabs.com\/blog\/br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/cheesecakelabs.com\/blog\/br\/#organization","name":"Cheesecake Labs","alternateName":"Cheesecake Labs Inc","url":"https:\/\/cheesecakelabs.com\/","logo":{"@type":"ImageObject","@id":"https:\/\/cheesecakelabs.com\/#logo","url":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2022\/06\/cheesecake-labs-1.png","contentUrl":"https:\/\/ckl-website-static.s3.amazonaws.com\/wp-content\/uploads\/2022\/06\/cheesecake-labs-1.png","caption":"Cheesecake Labs","inLanguage":"br"},"image":{"@type":"ImageObject","@id":"https:\/\/cheesecakelabs.com\/#primary-image","url":"https:\/\/ckl-website-v4-strapi-prod.s3.us-east-2.amazonaws.com\/ai_software_development_company_83fb512983.webp","contentUrl":"https:\/\/ckl-website-v4-strapi-prod.s3.us-east-2.amazonaws.com\/ai_software_development_company_83fb512983.webp","width":1920,"height":1080,"caption":"Cheesecake Labs \u2014 AI, Data & Blockchain software development services","inLanguage":"br"},"sameAs":["https:\/\/www.facebook.com\/cheesecakelabs","https:\/\/x.com\/cheesecakelabs","https:\/\/www.instagram.com\/cheesecakelabs\/","https:\/\/www.linkedin.com\/company\/cheesecake-labs\/","https:\/\/www.youtube.com\/channel\/UCdGEQ5AHJcmIlaOaI5fGGVA","https:\/\/clutch.co\/profile\/cheesecake-labs","https:\/\/www.behance.net\/cheesecakelabs","https:\/\/dribbble.com\/cheesecakelabs","https:\/\/www.designrush.com\/agency\/profile\/cheesecake-labs","https:\/\/www.g2.com\/products\/cheesecake-labs\/reviews"],"description":"Cheesecake Labs is a software development studio that designs and builds custom digital products \u2014 web, mobile, and platforms \u2014 combining product design and high-performance engineering.","foundingDate":"2013"},{"@type":"Person","name":"Natan Grando","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/cheesecakelabs.com\/blog\/br\/#\/schema\/person\/image\/","url":false,"contentUrl":false,"caption":"Natan Grando"},"description":"10 years of experience in Marketing and Sales in the Technology sector. My main purpose is help, support and structure efficient operations and also develop independent and multidisciplinary teams.","url":"https:\/\/cheesecakelabs.com\/blog\/br\/\/autor\/natan\/"}]}},"_links":{"self":[{"href":"https:\/\/cheesecakelabs.com\/blog\/br\/wp-json\/wp\/v2\/posts\/4079","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cheesecakelabs.com\/blog\/br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cheesecakelabs.com\/blog\/br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/br\/wp-json\/wp\/v2\/users\/65"}],"replies":[{"embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/br\/wp-json\/wp\/v2\/comments?post=4079"}],"version-history":[{"count":1,"href":"https:\/\/cheesecakelabs.com\/blog\/br\/wp-json\/wp\/v2\/posts\/4079\/revisions"}],"predecessor-version":[{"id":10479,"href":"https:\/\/cheesecakelabs.com\/blog\/br\/wp-json\/wp\/v2\/posts\/4079\/revisions\/10479"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/br\/wp-json\/wp\/v2\/media\/4098"}],"wp:attachment":[{"href":"https:\/\/cheesecakelabs.com\/blog\/br\/wp-json\/wp\/v2\/media?parent=4079"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/br\/wp-json\/wp\/v2\/categories?post=4079"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cheesecakelabs.com\/blog\/br\/wp-json\/wp\/v2\/tags?post=4079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}