响应式编程

函数式响应式编程 - Functional Reactive Programming

匿名 (未验证) 提交于 2019-12-02 21:53:52
我们略过概念,直接看函数式响应式编程解决了什么问题。 故事从下面这个例子展开: 两个密码输入框,一个提交按钮。 密码、确认密码都填写并一致,允许提交;不一致提示错误。 HTML 如下: <input id="pwd" placeholder="输入密码" type="password" /><br /> <input id="confirmPwd" placeholder="再次确认" type="password" /> <label id="errorLabel"></label><br /> <button id="submitBtn" disabled>提交</button> const validate = () => { const match = pwd.value === confirmPwd.value; const canSubmit = pwd.value && match; errorLabel.innerText = match ? "" : "密码不一致"; if (canSubmit) { submitBtn.removeAttribute("disabled"); } else { submitBtn.setAttribute("disabled", true); } }; pwd.addEventListener("input", validate

Android 响应式编程框架 - RxJava2(二)RxJava2+Retrofit 2获取网络数据

匿名 (未验证) 提交于 2019-12-02 21:53:52
本文主要让大家知道RxJava2+Retrofit 2获取网络数据简单方法,如果有不了解RxJava和Retrofit请先去学习了在来阅读。 // RxJava2.0 implementation 'io.reactivex.rxjava2:rxjava:2.0.1' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' // Retrofit implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.google.code.gson:gson:2.2.4' implementation 'com.squareup.retrofit2:converter-gson:2.3.0' // retrofit+gson implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' // Rxjava与Retrofit结合使用必须添加这个依赖 compile 'com.github.bumptech.glide:glide:4.6.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.6.1' //banner

[转帖]浅谈响应式编程(Reactive Programming)

点点圈 提交于 2019-12-02 04:29:59
浅谈响应式编程(Reactive Programming) https://www.jianshu.com/p/1765f658200a 例子写的非常好呢. 0.9312018.02.14 21:22:16字数 1877阅读 9816 这是告别CSDN后第一次使用简书写IT类的博客,还在适应。最不适应的就是不能直接手输markdown语法标记。(好像原因是我没有切换编辑器) 什么是响应式编程(Reactive Programming) In computing, reactive programming is an asynchronous programming paradigm concerned with data streams and the propagation of change. This means that it becomes possible to express static (e.g. arrays) or dynamic (e.g. event emitters) data streams with ease via the employed programming language(s), and that an inferred dependency within the associated execution model exists,

函数式响应式编程 - Functional Reactive Programming

拈花ヽ惹草 提交于 2019-11-29 00:59:03
我们略过概念,直接看函数式响应式编程解决了什么问题。 故事从下面这个例子展开: 两个密码输入框,一个提交按钮。 密码、确认密码都填写并一致,允许提交;不一致提示错误。 HTML 如下: <input id="pwd" placeholder="输入密码" type="password" /><br /> <input id="confirmPwd" placeholder="再次确认" type="password" /> <label id="errorLabel"></label><br /> <button id="submitBtn" disabled>提交</button> 常规做法 初始版 const validate = () => { const match = pwd.value === confirmPwd.value; const canSubmit = pwd.value && match; errorLabel.innerText = match ? "" : "密码不一致"; if (canSubmit) { submitBtn.removeAttribute("disabled"); } else { submitBtn.setAttribute("disabled", true); } }; pwd.addEventListener("input",

Flutter响应式编程 - RxDart

喜夏-厌秋 提交于 2019-11-28 04:09:28
import 'package:flutter/material.dart'; import 'package:rxdart/rxdart.dart'; import 'dart:async'; class RxDartDemo extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('RxDartDemo'), elevation: 0.0, ), body: RxDartDemoHome(), ); } } class RxDartDemoHome extends StatefulWidget { @override _RxDartDemoHomeState createState() => _RxDartDemoHomeState(); } class _RxDartDemoHomeState extends State<RxDartDemoHome> { PublishSubject<String> _textFieldSubject; @override void initState() { super.initState(); _textFieldSubject =

Springboot 2响应式编程 WebFlux 初体验

一个人想着一个人 提交于 2019-11-27 22:41:41
Spring boot 应用可以添加依赖 spring-boot-starter-webflux 来构建响应式 Web 应用程序。 内置响应式服务器 Spring Boot WebFlux 内置 Reactor Netty、Tomcat、Jetty 和 Undertow。默认端口是 8080。 WebFlux 的 CRUD 示例 Springboot WebFlux 将路由配置与请求的实际处理流程分开,如下示例。 @Configuration public class UserFluxController { @Bean public RouterFunction<ServerResponse> monoRouterFunction(UserFluxController userHandler) { return RouterFunctions .route(GET("/flux/list").and(accept(APPLICATION_JSON)), userHandler::findAll) .andRoute(GET("/flux/{id}").and(accept(APPLICATION_JSON)), userHandler::findOne) .andRoute(POST("/flux").and(accept(APPLICATION_JSON)),

Spring 5 响应式编程

孤人 提交于 2019-11-27 01:30:05
要点 Reactor 是一个运行在 Java8 之上的响应式流框架,它提供了一组响应式风格的 API 除了个别 API 上的区别,它的原理跟 RxJava 很相似 它是第四代响应式框架,支持操作融合,类似 RxJava 2 Spring 5 的响应式编程模型主要依赖 Reactor RxJava 回顾 Reactor 是第四代响应式框架,跟RxJava 2 有些相似。Reactor 项目由Pivotal 启动,以响应式流规范、Java8 和ReactiveX 术语表为基础。它的设计是Reactor 2(上一个主要版本)和RxJava 核心贡献者共同努力的结果。 在之前的同系列文章 RxJava 实例解析 和 测试RxJava 里,我们已经了解了响应式编程的基础:数据流的概念、Observable 类和它的各种操作以及通过工厂方法创建静态和动态的Observable 对象。 Observable 是事件的源头,Observer 提供了一组简单的接口,并通过订阅事件源来消费 Observable 的事件。Observable 通过 onNext 向 Observer 通知事件的到达,后面可能会跟上 onError 或 onComplete 来表示事件的结束。 RxJava 提供了 TestSubscriber 来测试 Observable,TestSubscriber 是一个特别的

(20)操作符熔合——响应式Spring的道法术器

纵然是瞬间 提交于 2019-11-25 20:57:52
本系列文章索引 《响应式Spring的道法术器》 前情提要 响应式流 | Reactor 3快速上手 | 响应式流规范 2.10 操作符熔合 操作符熔合是响应式编程领域比较前沿的研究话题,目的在于通过将多个操作符以某种方式熔合起来,以达到优化的效果,进而降低开销(比如执行时间,内存)。 以下部分内容参考了 Dávid Karnok 的 Operator-fusion( part1 、 part2 )。 2.10.1 分代的概念 首先介绍一下关于响应式编程库的分代的概念。直至现在,响应式编程库及相关概念仍然在不断的更新和升级。作者根据自己在响应式编程领域的研究经验,将响应式编程库分为四代。 第零代 起初的响应式编程工具主要包括类似 java.util.Observable 的基于订阅者模式的API,以及那些基于回调的API,如 Swing/AWT/Android 中的 addXXXListener。但是两者都有些共同的不足:不方便组合(就像我们前边的操作链那样)。 第一代 后来,Erik Meijer 和他在微软的团队解决了难以组合的问题,从而诞生了第一代响应式编程库:2010 年左右的 Rx.NET,2011 年的 Reactive4Java,以及 2013 年早期的 RxJava。 其他的语言也陆续基于 Rx.NET 的架构开发了类似的库,但很快大家发现这种架构存在的问题

响应式Spring的道法术器(Spring WebFlux 快速上手 + 全面介绍)

时光总嘲笑我的痴心妄想 提交于 2019-11-25 20:02:21
1. Spring WebFlux 2小时快速入门 Spring 5 之使用Spring WebFlux开发响应式应用。 lambda与函数式 (15min) Reactor 3 响应式编程库 (60min) Spring Webflux和Spring Data Reactive 开发响应式应用(45min) 通过以上内容相信可以对Spring 5.0 推出的响应式开发有了初步的体会。如果希望有更加深入的了解,欢迎阅读下边的系列文章—— 2. 响应式Spring的道法术器 这个系列的文章是为了记录下自己学习Spring响应式编程的所得,也希望能够帮助到更多的朋友。 原谅我标题党了,希望能从道、法、术、器四个层面尽量全面地学习和介绍关于Spring响应式编程的方方面面。 【道】响应式编程的概念、原则、特性与方法 1.1 什么是响应式编程 :响应式编程=数据流+变化传递+声明式; 1.2 响应式流 :响应式流的异步非阻塞和回压(也有翻译为“背压”、“负压”的)特性,分析与多线程并发方案以及基于回调和CompletableFuture的异步开发方式的不同; 1.3 Hello,reactive world ,通过实例学习用 lambda 、 Reactor 3 、 Spring Webflux和Spring Data Reactive 开发响应式应用的方法和技巧; 1.4